0
votes

We are looking at using ActiveMQ as the message transport with NServiceBus, instead of MSMQ, to enable Java endpoints to directly integrate with .NET endpoints over ActiveMQ.

By default NServiceBus endpoints run in a distributed transaction involving MSMQ and SQL Server. Is there the same level of support for distributed transactions in NServiceBus when the message transport is ActiveMQ? Are there any other drawbacks to using ActiveMQ with NServiceBus as compared to MSMQ?

2
Speaking from experience the active mq .net client has some major bugs. Not only do distributed transactions not work correctly but normal non distributed transactions have major bugs: issues.apache.org/jira/browse/…. I would advise against using it for windows development.Imran

2 Answers

1
votes

From the book Learning NServiceBus by David Boike:

Like MSMQ, ActiveMQ supports the DTC which ensures that our message handlers remain fully transactional.

As far as drawbacks go:

1
votes

We've actually uncovered issues with the .net client of ActiveMQ - it doesn't support distributed transactions well enough. While we've tried to work with the committers over there, we still haven't been able to get this fully resolved.

At this point in time, if you want to use ActiveMQ on .net (with or without NServiceBus) you'll have to take care of deduplicating any messages flowing through your system.

We're working hard to build this kind of infrastructure-level deduplication logic into NServiceBus such that queues like RabbitMQ and Azure Service Bus that don't support distributed transactions give the same behavior as MSMQ.