2013-12-12 5 views
3

Iv'e слышал по всему интернету, что rabbitMQ не поддерживает транзакции.Spring rabbitMQ - операторы транзакций и транзакций

Теперь, что сказал, пружинная основа дает нам менеджер транзакций кролика:

Вот отрывок из его определения:

<bean id="rabbitTransactionManager" 
    class="org.springframework.amqp.rabbit.transaction.RabbitTransactionManager"> 
    <property name="connectionFactory" ref="connectionFactory" /> 
</bean> 

Так что мой вопрос:

1) не использование аннотации @transactional по методу с менеджером транзакций фактически гарантирует эффект транзакции? 2) как весна удалось достичь транзакции, в то время как кролик не транснациональный?

+2

См. Http://www.rabbitmq.com/semantics.html и http://docs.spring.io/spring-amqp/docs/1.2.0.RELEASE/reference/html/amqp.html#d4e602. –

+1

Правильно, но имейте в виду, что существуют ограничения на транзакции кролика, как описано здесь: http://www.rabbitmq.com/semantics.html, но Spring AMQP связывает трансакционный канал с обычной семантикой транзакций Spring (например, публикация шаблон кролика в потоке контейнера слушателя использует тот же канал/транзакцию). Кроме того, примечание в ссылке Мартина о nacked сообщениях, идущих на обратную сторону очереди, устарело; это поведение было изменено в RabbitMQ, откатное сообщение теперь переходит в переднюю часть очереди. Я исправлю документы. –

+1

Исправление «откатное сообщение» должно быть «отклоненным сообщением»; нет откат сообщений, это отказ от сообщения, который возвращает его (теперь перед) очереди. –

ответ

3

Rabbit действительно поддерживает локальные транзакции. Например, в транзакции, если в вас что-то происходит, и полученное сообщение не может быть обработано, сообщение отправляется брокеру и не потребляется.

В отличие от других брокеров (таких, как большинство из JMS), Кролик не поддерживает распределенные транзакции (трансакции XA). Это означает, что вы не можете иметь одну и ту же транзакцию при отправке сообщения через Rabbit и сохранении некоторых данных в базе данных.

Смежные вопросы