- Added
EnableCrossEntityTransactions
property toServiceBusClientOptions
to support transactions spanning multiple entities. - Added
SessionIdleTimeout
property toServiceBusSessionProcessorOptions
to allow configuration of when to switch to the next session when using the session processor.
- Fixed issue where batch size calculation was not taking diagnostic tracing information into account.
- Retry on authorization failures to reduce likelihood of transient failures bubbling up to user application.
- Reduce maximum refresh interval to prevent Timer exceptions involving long-lived SAS tokens.
Thank you to our developer community members who helped to make the Service Bus client library better with their contributions to this release:
- Aaron Dandy (GitHub)
- Added virtual keyword to all client properties to enable mocking scenarios.
- Added
ServiceBusModelFactory.ServiceBusMessageBatch
to allow mocking aServiceBusMessageBatch
.
- Fixed an issue with the
ServiceBusProcessor
where closing and disposing or disposing multiple times resulted in an exception. (A community contribution, courtesy of aarondandy) - Fixed issue with batch size calculation when using
ServiceBusMessageBatch
.
- Fixed race condition that could occur when using the same
ServiceBusSessionReceiverOptions
instance for several receivers. - Increased the authorization refresh buffer to make it less likely that authorization will expire.
- Renamed GetRawMessage method to GetRawAmqpMessage.
- Removed LinkCloseMode.
- Rename ReceiveMode type to ServiceBusReceiveMode.
- Remove ServiceBusFailureReason of Unauthorized in favor of using UnauthorizedAccessException.
- Added dependency on Azure.Core.Amqp library.
- Added dependency on System.Memory.Data library.
- Removed
AmqpMessage
property in favor of aGetRawMessage
method onServiceBusMessage
andServiceBusReceivedMessage
. - Renamed
Properties
toApplicationProperties
inCorrelationRuleFilter
. - Removed
ServiceBusSenderOptions
. - Removed
TransactionEntityPath
fromServiceBusSender
.
- Added
AcceptSessionAsync
that accepts a specific session based on session ID.
- Renamed
ViaQueueOrTopicName
toTransactionQueueOrTopicName
. - Renamed
ViaPartitionKey
toTransactionPartitionKey
. - Renamed
ViaEntityPath
toTransactionEntityPath
. - Renamed
Proxy
toWebProxy
. - Made
MaxReceiveWaitTime
inServiceBusProcessorOptions
andServiceBusSessionProcessorOptions
internal. - Renamed
CreateSessionReceiverAsync
toAcceptNextSessionAsync
. - Removed
SessionId
fromServiceBusClientOptions
in favor ofAcceptSessionAsync
.
- Added AmqpMessage property on
ServiceBusMessage
andServiceBusReceivedMessage
that gives full access to underlying AMQP details. - Added explicit Close methods on
ServiceBusReceiver
,ServiceBusSessionReceiver
,ServiceBusSender
,ServiceBusProcessor
, andServiceBusSessionProcessor
.
- Renamed
ServiceBusManagementClient
toServiceBusAdministrationClient
. - Renamed
ServiceBusManagementClientOptions
toServiceBusAdministrationClientOptions
. - Renamed
IsDisposed
toIsClosed
onServiceBusSender
,ServiceBusReceiver
, andServiceBusSessionReceiver
. - Made
ServiceBusProcessor
andServiceBusSessionProcessor
implementIAsyncDisposable
- Removed public constructors for
QueueProperties
andRuleProperties
. - Added
version
parameter toServiceBusAdministrationClientOptions
constructor. - Removed
CreateDeadLetterReceiver
methods in favor of newSubQueue
property onServiceBusReceiverOptions
. - Made
EntityNameFormatter
internal. - Made settlement methods on
ProcessMessageEventArgs
andProcessSessionMessageEventArgs
virtual for mocking. - Made all Create methods on
ServiceBusClient
virtual for mocking.
- Bug in TaskExtensions.EnsureCompleted method that causes it to unconditionally throw an exception in the environments with synchronization context
Thank you to our developer community members who helped to make the Service Bus client library better with their contributions and design input for this release:
- Added MaxConcurrentCallsPerSession option to ServiceBusSessionProcessor
- Change MaxConcurrentCalls to MaxConcurrentSessions in ServiceBusSessionProcessor.
- Replace (Queue|Topic|Subscription|Rule)Description with (Queue|Topic|Subscription|Rule)Properties.
- Add Create(Queue|Topic|Subscription|Rule)Options for creating entities.
- Replace (Queue|Topic|Subscription)RuntimeInfo with (Queue|Topic|Subscription)RuntimeProperties.
- Remove MessageCountDetails and move the properties directly into the RuntimeProperties types.
Thank you to our developer community members who helped to make the Service Bus client library better with their contributions and design input for this release:
- Add IAsyncEnumerable Receive overload
- Add batch schedule/cancel schedule messages
- Remove use of "Batch" in Peek/Receive methods.
- Add Message/Messages suffix to Peek/Send/Receive/Abandon/Defer/Complete/DeadLetter methods.
- Rename ServiceBusSender.CreateBatch to ServiceBusSender.CreateMessageBatch
- Rename CreateBatchOptions to CreateMessageBatchOptions
- Rename ServiceBusMessageBatch.TryAdd to ServiceBusMessageBatch.TryAddMessage
- Change output list type from IList to IReadOnlyList
- Removed ServiceBusException.FailureReason.ClientClosed in favor of throwing ObjectDisposedException
Thank you to our developer community members who helped to make the Service Bus client library better with their contributions and design input for this release:
- Add the ServiceBusManagementClient for CRUD operations on a namespace
- Add constructor for ServiceBusMessage taking a string
- Use the BinaryData type for ServiceBusMessage.Body
- Add diagnostic tracing
- Introduce ServiceBusSessionReceiverOptions/ServiceBusSessionProcessorOptions for creating ServiceBusSessionReceiver/ServiceBusSessionProcessor
- Make ServiceBusReceivedMessage.Properties IReadOnlyDictionary rather than IDictionary
Thank you to our developer community members who helped to make the Service Bus client library better with their contributions and design input for this release:
- Allow specifying a list of named sessions when using ServiceBusSessionProcessor
- Transactions/Send via support
- Add SessionInitializingAsync/SessionClosingAsync events in ServiceBusSessionProcessor
- Do not attempt to autocomplete messages with the processor if the user settled the message in their callback
- Add SendAsync overload accepting an IEnumerable of ServiceBusMessage
- Various performance improvements
(A community contribution, courtesy of danielmarbach) - Improve the way exception stack traces are captured
(A community contribution, courtesy of danielmarbach)
- Change from using a static factory method for creating a sendable message from a received message to instead
using a constructor
(A community contribution, courtesy of danielmarbach) - CreateSessionProcessor parameter sessionId renamed to sessionIds (also changed from string to params string array).
- Remove cancellation token from CreateProcessor and CreateSessionProcessor
(A community contribution, courtesy of danielmarbach) - Rename SendBatchAsync to SendAsync
- Add SenderOptions parameter to CreateSender method.
- Initial preview for new version of Service Bus library.
- Includes sending/receiving/settling messages from queues/topics and session support.