Azure / Azure/azure-sdk-for-rust

[Service Bus] Add transactions and cross entity transactions

Open
#4,953 0 comments 1 reaction 0 assignees View on GitHub
Client feature-request Service Bus
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.