Azure / Azure/azure-sdk-for-rust
[Service Bus] Add transactions and cross entity transactions
- Dominant language
- Rust
- Stars
- 884
- Forks
- 365
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 109
Description
## Summary
Transactions are not supported. There is no way to group sends and settlements into one atomic unit.
## Motivation
Service Bus supports transactions over the AMQP transaction coordinator, and `com.microsoft:update-disposition` documents transaction support. .NET turns on cross entity transactions with `ServiceBusClientOptions.EnableCrossEntityTransactions`, which routes the transfers through one entity so the service can commit them together.
This is the only feature that needs transaction support in the AMQP core crate, so it is the natural last feature to add.
## Proposal
- Add a transaction scope that a caller opens, uses across sends and settlements, then commits or rolls back.
- Support cross entity transactions with send via routing.
- Make sure a transaction that spans a reconnect fails cleanly, because the coordinator link does not survive.
## Dependencies
Blocked by:
- #4937 [AMQP] No support for AMQP transactional state
- #4944 [Service Bus] Add the management settlement path for messages off the current link
Sub-issue of #4934.
Contributor guide
Research direction
Start by reading the proposal and its dependencies, #4937 for AMQP transactional state and #4944 for the management settlement path. Trace how Service Bus sends and settlements currently flow, then define completion against the proposal: transaction scope commit/rollback, cross-entity routing, and clean failure when reconnecting.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100