Change Log
Version 9.1
Section titled “Version 9.1”- Adds major reliability and outbox improvements, including transactional outbox support expansion and new outbox controls.
- Introduces RabbitMQ queue-based delayed redelivery and improves transport-specific behavior across RabbitMQ, Kafka, and Azure Service Bus.
- Improves job service robustness, trace handling, and test harness capabilities.
What’s New
Section titled “What’s New”- Added transactional outbox support for MultiBus.
- Implemented transactional bus and consumer outbox for Kafka.
- Added SkipOutbox attribute and topology configuration support to skip outbox per message (transactional and in-memory outbox).
- Added option to disable duplicate detection for EF/Mongo outbox flows so InboxState can be removed after delivery completion.
- Added configurable retry policy settings for bus outbox delivery and inbox cleanup service.
- Added Azure Service Bus emulator support, via the EmulatorHost method.
Transport & Messaging Improvements
Section titled “Transport & Messaging Improvements”- Added RabbitMQ delayed delivery/redelivery (queue-based TTL + DLX approach).
- Further improved RabbitMQ resiliency around broker disconnection/exception caching.
- Ensured Hangfire routing keys are correctly copied to messages.
- Fixed Azure identity default behavior to avoid unnecessary Service Bus emulator checks.
- Preserved existing RawMessageDelivery (SQS) attribute rather than overwriting it.
Reliability, Jobs, and Observability
- Improved job state machine behavior for missing attemptId and fault tracking/logging edge cases.
- Suppressed extraneous StartJob messages from StartJobConsumer.
- Fixed Kill Switch activity handling to prevent traceId propagation during endpoint restart/stop cycles.
Testing & Developer Experience
Section titled “Testing & Developer Experience”- Added test harness save-mode option to reduce memory footprint for large test runs.
- Added test harness Act() block support for action-scoped assertions.
Fixes & Compatibility
Section titled “Fixes & Compatibility”- Fixed SQL Server/MySQL saga lock SQL quoted identifiers.
- Fixed Oracle outbox statement formatter behavior.
- Fixed client resolution path to use delegate directly (DI resolution correctness).
- Reverted a SendContext → PublishContext change to avoid backward compatibility breakage.
- Renamed misnamed AddMessageRoute overloads for consistency.
Internal/Repo Maintenance
Section titled “Internal/Repo Maintenance”- Removed old documentation tree from this repository.
- Reduced generic indirection in connectors and cleaned up type-converter/type-cache internals.
- Removed a noisy message-type serialization warning with high false-positive potential.
- Updated copyright metadata.
Upgrade Notes
Section titled “Upgrade Notes”- Database schema change: transactional outbox tables were updated in this release; apply corresponding migrations before rollout.
- If you rely on older AddMessageRoute overload names, check for compile-time API rename impacts.
- No intentional major runtime breaking change is indicated beyond the explicit schema migration requirement.
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