Azure / Azure/azure-sdk-for-rust
[AMQP] Management client cannot send a typed request body or read the status fields
- Dominant language
- Rust
- Stars
- 884
- Forks
- 365
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 109
Description
## Summary
`AmqpManagement::call` takes an operation name and a map of application properties. Service Bus management operations put their arguments in the message body, not in the application properties, and they return `statusCode` and `statusDescription` that the caller needs to read.
## Motivation
Every Service Bus request and response operation is entity scoped and attaches a pair of links to `/$management`. The operation name goes in the `operation` application property. The arguments go in an AMQP value body, which is usually a map. Each request accepts an optional unsigned `com.microsoft:server-timeout` in milliseconds. Each response returns an integer `statusCode` that uses HTTP codes, plus an optional `statusDescription`.
The current signature forces callers to put body arguments into application properties. `Receiver::defer_message` already does this with the lock token, which is one reason it fails.
## Proposal
- Add a management call that accepts a typed request body.
- Support the `com.microsoft:server-timeout` application property.
- Surface `statusCode` and `statusDescription` to the caller so an operation can map a status to a typed error.
Sub-issue of #4934.
Contributor guide
Research direction
Start with AmqpManagement::call and Receiver::defer_message to understand how management arguments are currently placed in application properties. Trace the Service Bus management request and response flow, then verify that typed request bodies, com.microsoft:server-timeout, statusCode, and statusDescription are available to callers for typed error handling.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100