AMQP transaction support and Send Via are now generally available

For the longtime Service Bus users among our community have enjoyed message transactions with the old client. As of today, transactions are fully supported in our new open source libraries (Java and .Net Standard) or any AMQP library that implements the AMQP 1.0 Standard.

If you know the SBMP transaction feature you don’t need to read much further but likely will want to right away see how this all works. Please find a code sample here:

https://github.com/Azure/azure-service-bus/tree/master/samples/DotNet/Microsoft.Azure.ServiceBus/TransactionsAndSendVia

If you are new to the Transaction or the Send Via features, you may want to go through the official documentation.

The feature is available across all regions and in Standard as well as our Premium SKU. It is available for both the .Net Standard and Java client. A Java sample will be available on GitHub shortly.

Some key things to note:

  • Transactions cannot span more than one connection context, so your code needs to reflect that.
  • Receive is not part of the transaction. Only operations which do something with the message on the broker are part of the transaction. These are: Send, Complete, Dead letter, Defer. Receive itself already utilizes the Peek lock concept on the broker.
  • Send Via lets you cross entity boundaries within a transaction scope: A single transaction cannot theoretically span across entities. To support cross entity transaction, you can now send a message to a destination-queue via another queue. The transaction will be performed on the via-queue, and once successful, the message will be forwarded/transferred to its intended destination.

Enjoy this great new feature!