What is Rebus?

little_rebusbus2_copy-200x235Rebus is a free .NET “service bus”, but as we like to say: It’s just a messaging library. You can use it to build distributed systems in .NET.

What does it provide?

It does some nice things because it provides

  • a durable & safe way of exchanging messages across processes and machines
  • a neat model for routing messages based on types
  • a message handler API that makes handling messages easy and fun
  • transport and persistence abstractions that make your application portable and testable
  • a great model for sagas (i.e. stateful services, also known in the literature as “process managers”) and coordinating stuff that happens over time
  • handling of serialization, threading, logging, transactions and errors

and more.

What can you use it for?

Rebus can be used both internally in an application to coordinate things and to queue up work, making the application more robust towards high loads and more capable of handling long-running processes that might consist of several discrete steps.

It can also be used in bigger integration scenarios, where it will usually connect systems using pub/sub messaging and coordinate integrations at the periphery.

Since some of the transports can trivially “cross the borders of your firewall” (like e.g. by leveraging Azure Service Bus), it can also be used as the glue between your internal systems and those you have chosen to host in the cloud, making for a great way to build hybrid cloud applications.

How to get it

Rebus is an ordinary .NET library which is available on NuGet.org as a binary and on GitHub as source code.

If you would like to read some more about it, there’s also a documentation wiki on GitHub.

Rebus is absolutely FREE to use, without any kind of limitations. It will stay that way forever.


The open source bits of Rebus are supported by Rebus.fm – this includes all of the NuGet packages sourced from the official Rebus repository.