2014-02-14 5 views
0

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

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

+0

Говоря с опытом, у активного клиента mq .net есть некоторые основные ошибки. Не только распределенные транзакции работают неправильно, но и обычные нераспределенные транзакции имеют серьезные ошибки: https://issues.apache.org/jira/browse/AMQNET-476?jql=project%20%3D%20AMQNET%20AND%20resolution%20 % 3D% 20Unresolved% 20and% 20priority% 20% 3D% 20Major% 20ORDER% 20BY% 20key% 20DESC. Я бы посоветовал не использовать его для разработки Windows. – Imran

ответ

1

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

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

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

+0

Бывают случаи, когда activemq вообще потеряет сообщение, это для транзакций dtc и non dtc. Ошибки в основном существуют во время перехода на другой ресурс, т. Е. Когда брокер идет вниз, а подчиненный берет на себя или возобновляет работу брокера. – Imran

1

Из книги Learning NServiceBus Дэвида Boike:

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

Насколько недостатки идут:

+0

Я просмотрел список проблем NServiceBus.ActiveMQ GitHub. Я надеялся на более глубокое понимание людей, которые либо вносят свой вклад в этот проект, либо использовали распределенные транзакции с NServiceBus и ActiveMQ. – bgrommes