Поддержка распределенных транзакций для NServiceBus с ActiveMQ?

Мы рассматриваем возможность использования ActiveMQ в качестве транспорта сообщений с NServiceBus вместо MSMQ, чтобы позволить конечным точкам Java напрямую интегрироваться с конечными точками .NET через ActiveMQ.

По умолчанию конечные точки NServiceBus выполняются в распределенной транзакции с участием MSMQ и SQL Server. Существует ли такой же уровень поддержки распределенных транзакций в NServiceBus, когда транспортом сообщений является ActiveMQ? Есть ли другие недостатки использования ActiveMQ с NServiceBus по сравнению с MSMQ?


person bgrommes    schedule 14.02.2014    source источник
comment
Исходя из опыта, в активном клиенте mq .net есть несколько серьезных ошибок. Мало того, что распределенные транзакции работают неправильно, обычные нераспределенные транзакции имеют серьезные ошибки: issues.apache.org/jira/browse/. Я бы посоветовал не использовать его для разработки Windows.   -  person Imran    schedule 09.05.2014


Ответы (2)


На самом деле мы обнаружили проблемы с .net-клиентом ActiveMQ — он недостаточно хорошо поддерживает распределенные транзакции. Хотя мы пытались работать с коммиттерами там, мы все еще не смогли решить эту проблему полностью.

На данный момент, если вы хотите использовать ActiveMQ в .net (с NServiceBus или без него), вам придется позаботиться о дедупликации любых сообщений, проходящих через вашу систему.

Мы прилагаем все усилия, чтобы встроить такую ​​логику дедупликации на уровне инфраструктуры в NServiceBus, чтобы такие очереди, как RabbitMQ и служебная шина Azure, которые не поддерживают распределенные транзакции, вели себя так же, как MSMQ.

person Udi Dahan    schedule 17.02.2014
comment
Бывают случаи, когда activemq вообще теряет сообщение, это относится как к транзакциям dtc, так и к транзакциям без dtc. Ошибки в основном возникают при аварийном переключении, т. е. когда брокер выходит из строя и берет на себя ведомое устройство, или если брокер перезапускается. - person Imran; 09.05.2014

Из книги Learning NServiceBus от Дэвида Бойке:

Как и MSMQ, ActiveMQ поддерживает DTC, который гарантирует, что наши обработчики сообщений останутся полностью транзакционными.

Что касается недостатков:

person schellack    schedule 14.02.2014
comment
Я просмотрел список проблем NServiceBus.ActiveMQ GitHub. Я надеялся на более глубокое понимание от людей, которые либо участвуют в этом проекте, либо использовали распределенные транзакции с NServiceBus и ActiveMQ. - person bgrommes; 14.02.2014