Hi everyone,
We’ve just released NServiceBus.Transport.AzureServiceBus 3.2.1 and 2.0.6.
Fixed bugs
- #817 SendsAtomicWithReceive and recoverability are not working with a large number of outgoing messages
How to know if you are affected
You are affected if you have any endpoints that fulfill all of the following:
- The endpoint is using NServiceBus.Transport.AzureServiceBus version 2.x or later.
- The endpoint is using the SendsAtomicWithReceive transaction mode option, which is the default behavior unless you’re using the Outbox.
- The endpoint contains a message handler that can attempt to send more than 100 messages.
Symptoms
In V2 of the transport, we have observed ghost messages when a message handler attempts to send more than 100 messages in an endpoint running in transaction mode SendsAtomicWithReceive.
Azure Service Bus uses the concept of transfers to enable its transactional capability. In both V2 and V3, when attempting to move the incoming message to the error queue, following the quota-exceeded exception, we have sometimes observed the incoming message getting stuck in transfer for some time, after which it’s sometimes successfully delivered to the error queue, but sometimes completely lost.
Azure Service Bus imposes a limitation of 100 messages within a single transaction. It is therefore expected that attempting this will fail, and the original message will be retried (assuming you have retries enabled) and ultimately end up in the error queue. In such a scenario, no outgoing messages should arrive at the destination as the original transaction is never committed.
When to upgrade
You should upgrade immediately if your endpoints use the impacted transport versions and configuration options.
Where to get it
- You can install NServiceBus.Transport.AzureServiceBus 3.2.1 from NuGet.
- You can install NServiceBus.Transport.AzureServiceBus 2.0.6 from NuGet.
With thanks,
The team in Particular
Please read our release policy for more details.