Iv'e слышал по всему интернету, что rabbitMQ не поддерживает транзакции.Spring rabbitMQ - операторы транзакций и транзакций
Теперь, что сказал, пружинная основа дает нам менеджер транзакций кролика:
Вот отрывок из его определения:
<bean id="rabbitTransactionManager"
class="org.springframework.amqp.rabbit.transaction.RabbitTransactionManager">
<property name="connectionFactory" ref="connectionFactory" />
</bean>
Так что мой вопрос:
1) не использование аннотации @transactional по методу с менеджером транзакций фактически гарантирует эффект транзакции? 2) как весна удалось достичь транзакции, в то время как кролик не транснациональный?
См. Http://www.rabbitmq.com/semantics.html и http://docs.spring.io/spring-amqp/docs/1.2.0.RELEASE/reference/html/amqp.html#d4e602. –
Правильно, но имейте в виду, что существуют ограничения на транзакции кролика, как описано здесь: http://www.rabbitmq.com/semantics.html, но Spring AMQP связывает трансакционный канал с обычной семантикой транзакций Spring (например, публикация шаблон кролика в потоке контейнера слушателя использует тот же канал/транзакцию). Кроме того, примечание в ссылке Мартина о nacked сообщениях, идущих на обратную сторону очереди, устарело; это поведение было изменено в RabbitMQ, откатное сообщение теперь переходит в переднюю часть очереди. Я исправлю документы. –
Исправление «откатное сообщение» должно быть «отклоненным сообщением»; нет откат сообщений, это отказ от сообщения, который возвращает его (теперь перед) очереди. –