Change Log
Version 9.1
Section titled “Version 9.1”Highlights
Section titled “Highlights”- Transactional outbox support for MultiBus, allowing multiple bus instances to share the same transactional outbox.
- Added SkipOutbox attribute to skip the outbox for a specific message type.
- Added transactional outbox support for Kafka.
- Added Azure Service Bus emulator support, via the EmulatorHost method.
- Added queue-based delayed redelivery for RabbitMQ, using native TTL + dead-letter exchanges instead of the delayed-exchange plugin.
Version 9.0.1
Section titled “Version 9.0.1”This is a minor patch release that adds support for the Azure Service Bus emulator (use the EmulatorHost method to configure it) and includes the ActiveMQ
NuGet package. There are also a couple of minor tweaks and bug fixes.
- Fixed #6183 Amazon SQS body length calculation for multibyte characters.
- Outbox receive count now starts at 1, instead of 3.
- Added additional event/state handlers for the Job Service sagas to avoid unexpected errors due to redelivered messages.
- Cleaned up SQS/SQL transport lock thread safety.
Breaking changes
Section titled “Breaking changes”- Renamed the
AddSendEndpointConventionextension methods toAddMessageRoute(this was an oversight in the 9.0 release when the core registration method name was changed).
Version 9.0
Section titled “Version 9.0”Highlights
Section titled “Highlights”- Performance-focused refactorings and optimizations across message topology, runtime configuration, saga types, and transactional outbox.
- AWS SQS enhancement: DeduplicationId and MessageGroupId are now properly copied from incoming messages to outgoing messages.
- Azure Service Bus improvements: session saga fixes, message lock completion behavior, and changed SendTransportContext behavior to avoid spurious SENT logs for CANCEL (scheduled messages).
- New net10.0 build target and NuGet/README updates.
- JSON serialization options can now be configured per receive endpoint (and per-bus), eliminating the global limitation when dealing with multiple bus instances.
- Added ability to configure JobOptions concurrency limit per instance (useful for heterogeneous nodes)
- Added AttemptId to job type state machine, and added additional logic to avoid failures due to duplicate message delivery/redelivery.
- New
IScopedBusandIScopedBus<TBus>interfaces were added to support message routes (and other new features in the future). When producing messages,IScopedBuscan be used instead ofIBusin scoped contexts to ensure messages are properly routed through middleware. - Added message routes to the bus, pushing for
EndpointConventionto be deprecated - Transactional Outbox now supports routing slip activities
- Optimized Transactional Outbox to reduce receive loops when no messages are produced (reduces receive count from 3 to 1)
- Added concurrent message delivery for transactional outbox (opt-in only, may affect message ordering)
- Licensing support has been added to bus configuration with validation.
- Trim exception messages to avoid overflowing message size limits with extensive stack traces
- CooperativeSticky should work with Kafka
Breaking changes
Section titled “Breaking changes”- TransactionalBus is deprecated — it is not well understood or tested; migrate away before the next major release where it may be removed.
- JSON serialization settings are now configured per bus/endpoint rather than globally. If you relied on global JSON settings, update configuration to set serialization at the bus or endpoint level. Should be backward-compatible, but new capabilities now exist.
Bug fixes
Section titled “Bug fixes”- Fixed #6154: added NotifyFaulted to exception branch to ensure typed
Fault<T>is published instead of ReceiveFault - Fixed the previously broken ASB session saga repository unit test
- Ensure message locks can complete when using Azure Service Bus
- Included all fixes from in the v8 codebase