Azure / Azure/azure-sdk-for-rust

[Service Bus] Service Bus SDK GA (tracking)

Open
#4,934 0 comments 3 reactions 1 assignee Claimed by @j7nw4r View on GitHub
Client Epic Service Bus
Dominant language
Rust
Stars
884
Forks
365
Avg merge
2d 19h
Merged PRs (30d)
109

Description

## Summary

The `azure_messaging_servicebus` crate exists in the repository but it does not ship. The manifest sets `publish = false`, the CHANGELOG still reads `0.1.0 (Unreleased)`, and the two `rust - servicebus` CI pipelines are disabled. This issue tracks the work that takes the crate to a stable 1.0 release on crates.io.

## Motivation

The crate already contains a client, a sender, and a receiver, and its single shared connection design matches `Azure.Messaging.ServiceBus`. The remaining work falls into three groups. The AMQP core crate cannot express two of the four settlement outcomes that Service Bus requires. Several data plane paths send the wrong AMQP frames and silently discard caller input. Sessions, the rule manager, the processor, the administration client, recorded tests, and tracing do not exist yet.

`Azure.Messaging.ServiceBus` is the reference for the public API surface. The `azure_messaging_eventhubs` crate is the reference for Rust side architecture, and in particular for the recoverable connection layer, the retry policy, and the recorded test setup.

## Proposal

Complete the sub-issues below in tier order. Tier 0 unblocks almost everything else, and tier 4 holds the release gates.

### Tier 0: core AMQP prerequisites

- [ ] #4935 [AMQP] Receiver cannot send Modified or annotated Rejected dispositions
- [ ] #4936 [AMQP] Management client cannot send a typed request body or read the status fields
- [ ] #4937 [AMQP] No support for AMQP transactional state

### Tier 1: crate foundation

- [ ] #4938 [Service Bus] Replace ServiceBusError with azure_core::Error and a failure reason
- [ ] #4939 [Service Bus] Add a retry policy and client retry options
- [ ] #4940 [Service Bus] Add a recoverable connection and link layer
- [ ] #4941 [Service Bus] Settle the public API shape before API review
- [ ] #4942 [Service Bus] Consolidate the message model and expose the raw AMQP message

### Tier 2: data plane correctness

- [ ] #4943 [Service Bus] Settlement sends the wrong AMQP outcomes and discards caller input
- [ ] #4944 [Service Bus] Add the management settlement path for messages off the current link
- [ ] #4945 [Service Bus] Lock token handling is wrong for deferred messages and for the GUID encoding
- [ ] #4946 [Service Bus] schedule_message returns a fabricated sequence number
- [ ] #4947 [Service Bus] Sender builds a new session and link for each call
- [ ] #4948 [Service Bus] Add prefetch and link credit control

### Tier 3: feature parity

- [ ] #4949 [Service Bus] Add session support
- [ ] #4950 [Service Bus] Add a rule manager for subscriptions
- [ ] #4951 [Service Bus] Decide on and add a processor
- [ ] #4952 [Service Bus] Add a session processor
- [ ] #4953 [Service Bus] Add transactions and cross entity transactions
- [ ] #4954 [Service Bus] Add an administration client
- [ ] #4955 [Service Bus] Add AMQP over WebSockets transport
- [ ] #4956 [Service Bus] Add connection string and shared access signature credentials

### Tier 4: GA gates

- [ ] #4957 [Service Bus] Add recorded tests and re-enable the CI pipelines
- [ ] #4958 [Service Bus] Add distributed tracing
- [ ] #4959 [Service Bus] Write the samples, the README, and the migration guide
- [ ] #4960 [Service Bus] Pass API review and publish 1.0
- [ ] #4961 [Service Bus] Support the Service Bus emulator
- [ ] #4962 [Service Bus] Remove dead code and add an AMQP constants module

## Scoping decisions

Two decisions belong on this issue and both are open.

1. Does the crate ship a processor for 1.0? The Go SDK reached GA without one. A processor adds automatic completion, automatic lock renewal, and handler concurrency.
2. Does the administration client ship in this crate or in a separate crate? .NET ships it in the same assembly. Go ships it as a sub-package.

## Related

- #2293 tracks the review debt from PR #2863 and is a sub-issue of this issue.
- #3431 tracks the disabled CI pipelines.
- #2668 tracks emulator support.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.