NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #689 most downloaded on NuGet
Rebus is a lean service bus for .NET
Last release 11 days ago
17 Sep 2026
Release timing varies
gaps range from 2 weeks to 7 months
Nearly every release is documented
notes for 56 of the last 60 stable releases
15 versions withdrawn
withdrawn after publishing
127 years old
545 releases · first in 1900
Nothing published for this version
Nothing published for this version
Nothing published for this version
Make it possible to set the rbs2-senttime header explicitly (i.e. it is no longer overwritten by the default headers step)
rbs2-senttime header explicitly (i.e. it is no longer overwritten by the default headers step)One column per quarter.
Improve dispatch speed by using the nifty type-to-index trick
.Serialization(s => s.UseSystemJson()) - thanks [mathiasnohall]Perform directory read/write access check in file system saga persister too - thanks [kendallb]
Use GUID in file name when doing read/write test in file system data bus storage to avoid colliding with other processes starting up - thanks [kendall
isCompliant: true makes Rebus much more CLS compliant
isCompliant: true makes Rebus much more CLS compliantMake the number of saga data conflict resolution attempts configurable
Nothing published for this version
Nothing published for this version
Nothing published for this version
Revert breaking change that snuck into the IAsyncTaskFactory interface
IAsyncTaskFactory interfaceEnforce handler registration in built-in handler activator before the bus is started. If one absolutely wants to add handlers AFTER having started the
Fix bug that would prevent fail-fast exceptions to cause messages to fail fast when thrown in a 2nd level retry
Add ability to point out correlation properties of saga data by specifying them as strings - thanks [seankearon]
Add extension method that makes it possible to manually dead-letter the message currently being handled
Nothing published for this version
Introduce IMessageTypeNameConvention, which defaults to simple assembly-qualified type names. Can be customized by calling .Serialization(s => s.UseCu
IMessageTypeNameConvention, which defaults to simple assembly-qualified type names. Can be customized by calling .Serialization(s => s.UseCustomMessageTypeNames().Add(...))Make file system transport compatible with previous versions of Rebus - thanks [jr01]
Move data bus configuration to main configurer, so now you can go .DataBus(d => d.StoreInFileSystem(@"\\network-path\folder"))
.DataBus(d => d.StoreInFileSystem(@"\\network-path\folder"))d.SendBigMessagesAsAttachments(bodySizeThresholdBytes: 200*1000).Options(o => o.FailFastOn<TException>()) or .Options(o => o.FailFastOn<TException>(when: ex => ex.Message.Contains("whatever")))RebusTransactionScope so it can be used inside Rebus handlers (in case that would be handy to anyone)IDictionary<string, string> - thanks [hellfirehd]TransactionContext to use event (code-generated lists of callbacks) instead of ConcurrentQueue<Func<Task>> - thanks [jods4]ManualResetEvent from Rebus' async background task implementation - thanks [jods4]RebusTransactionScopeSuppressor, which may be used in cases where an already active Rebus transaction scope must be temporarily suppressedNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix bug that would erroneously return a not-so-useful message context when inside a RebusTransactionScope
RebusTransactionScopeAdd rbs2-defer-count header, which is initially set to 1 when a message is deferred - each subsequent deferral of the message will then increment this
rbs2-defer-count header, which is initially set to 1 when a message is deferred - each subsequent deferral of the message will then increment this counterFix bug in the "enforce exclusive saga access" feature that would result in an exception, if the same lock bucket got hit more than once
Add cancellation support by adding a CancellationToken to the incoming step context. The token can be easily found by calling the GetCancellationToken
CancellationToken to the incoming step context. The token can be easily found by calling the GetCancellationToken() extension method on IMessageContenxtNothing published for this version
Nothing published for this version
Fix subtle cancellation/timing bug in TplAsyncTask which would lead to disposal taking several seconds, logging a warning that it took a long time
TplAsyncTask which would lead to disposal taking several seconds, logging a warning that it took a long timeNothing published for this version
Allow for setting the default return address by going .Options(o => o.SetDefaultReturnAddress("another-queue"))
.Options(o => o.SetDefaultReturnAddress("another-queue"))Port changes from 4.3.0 forward
Add count methods form InMemNetwork - thanks [caspertdk]
InMemNetwork - thanks [caspertdk]Throw exceptions in TransactionContext when hooking up callbacks after it has been completed (usually a sign of async stuff not being awaited) - thank
TransactionContext when hooking up callbacks after it has been completed (usually a sign of async stuff not being awaited) - thanks [mattwhetton]Move entire Rebus.Testing namespace to its own NuGet package: Rebus.TestHelpers (named "TestHelpers" to avoid confusing it with Rebus' own test projec
Rebus.Testing namespace to its own NuGet package: Rebus.TestHelpers (named "TestHelpers" to avoid confusing it with Rebus' own test project, and just because it's more appropriate)IDisposable instances tracked by Injectionist in the event that an IInitializable fails during startupDefer method on IRoutingApi allowing for easily deferring explicitly routed messagesCreate() instead of Start(), and the returned IBusStarter can be used to start message processing when it is desired to do soITopicNameConvention for defining how types are mapped to topics - thanks [heberop]IdempotencyData to accomodate certain stubborn serializersHandlerInvoker instances created in the ActivateHandlersStep by overriding - thanks [Liero]Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →