• Stars
    star
    2,123
  • Rank 20,884 (Top 0.5 %)
  • Language
    C#
  • License
    Other
  • Created over 12 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🚌 Simple and lean service bus implementation for .NET

Rebus

Latest stable: NuGet stable

Current prerelease: NuGet pre

Tests: Build status

This repository contains Rebus "core". You may also be interested in one of the many integration libraries.

For information about the commercial add-on (support, tooling, etc.) to Rebus, please visit Rebus FM's page about Rebus Pro.

What?

Rebus is a lean service bus implementation for .NET. It is what ThoughtWorks in 2010 called a "message bus without smarts" - a library that works well as the "dumb pipes" when you need asynchronous communication in your microservices that follow the "smart endpoints, dumb pipes" principle.

Rebus aims to have

  • a simple and intuitive configuration story
  • a few well-selected options
  • no doodleware
  • as few dependencies as possible (currently only JSON.NET)
  • a broad reach (targets .NET Standard 2.0, i.e. .NET Framework 4.6.1, .NET Core 2, and .NET 5 and onwards)
  • integration with external dependencies via small, dedicated projects
  • the best error messages in the world
  • a frictionless getting-up-and-running-experience

and in doing this, Rebus should try to align itself with common, proven asynchronous messaging patterns.

Oh, and Rebus is FREE as in beer 🍺 and speech 💬, and it will stay that way forever.

More information

If you want to read more, check out the official Rebus documentation wiki or check out my blog.

You can also follow me on Twitter: @mookid8000

Getting started

Rebus is a simple .NET library, and everything revolves around the RebusBus class. One way to get Rebus up and running, is to manually go

var bus = new RebusBus(...);
bus.Start(1); //< 1 worker thread

// use the bus for the duration of the application lifetime

// remember to dispose the bus when your application exits
bus.Dispose();

where ... is a bunch of dependencies that vary depending on how you want to send/receive messages etc. Another way is to use the configuration API, in which case you would go

var someContainerAdapter = new BuiltinHandlerActivator();

for the built-in container adapter, or

var someContainerAdapter = new AdapterForMyFavoriteIocContainer(myFavoriteIocContainer);

to integrate with your favorite IoC container, and then

Configure.With(someContainerAdapter)
    .Logging(l => l.Serilog())
    .Transport(t => t.UseMsmq("myInputQueue"))
    .Routing(r => r.TypeBased().MapAssemblyOf<SomeMessageType>("anotherInputQueue"))
    .Start();

// have IBus injected in application services for the duration of the application lifetime    

// let the container dispose the bus when your application exits
myFavoriteIocContainer.Dispose();

which will stuff the resulting IBus in the container as a singleton and use the container to look up message handlers. Check out the Configuration section on the official Rebus documentation wiki for more information on how to do this.

If you want to be more specific about what types you map in an assembly, such as if the assembly is shared with other code you can map all the types under a specific namespace like this:

Configure.With(someContainerAdapter)
    .(...)
    .Routing(r => r.TypeBased().MapAssemblyNamespaceOf<SomeMessageType>("namespaceInputQueue"))
    .(...);

// have IBus injected in application services for the duration of the application lifetime    

// let the container dispose the bus when your application exits
myFavoriteIocContainer.Dispose();

License

Rebus is licensed under The MIT License (MIT). Basically, this license grants you the right to use Rebus in any way you see fit. See LICENSE.md for more info.

The purpose of the license is to make it easy for everyone to use Rebus and its accompanying integration libraries. If that is not the case, please get in touch with [email protected] and then we will work something out.

More Repositories

1

RebusSamples

Small sample projects
C#
109
star
2

Tababular

📃 Simple monospace text table formatting
C#
85
star
3

Rebus.ServiceProvider

🚌 Microsoft Extensions Dependency Injection container adapter for Rebus
C#
64
star
4

Rebus.RabbitMq

🚌 RabbitMQ transport for Rebus
C#
63
star
5

GoCommando

:bowtie: Console application helper library
C#
56
star
6

Debaser

😈 Lean mean SQL Server upsert machine
C#
46
star
7

Rebus.SqlServer

🚌 Microsoft SQL Server transport and persistence for Rebus
C#
40
star
8

migr8

🌱 Short'n'sweet SQL Server/PostgreSQL/MySQL schema migration library
C#
38
star
9

Rebus.AzureServiceBus

🚌 Azure Service Bus transport for Rebus
C#
31
star
10

Rebus.SignalR

🚌 Rebus-based SignalR backplane
C#
28
star
11

Topper

🎩 Simple Windows Service helper (Topshelf-based, Azure Web Job capable)
C#
27
star
12

Spinnerino

💈 Animated console spinner thingie
C#
20
star
13

Rebus.Events

🚌 Convenient event configuration extensions for Rebus
C#
17
star
14

Rebus.AmazonSQS

🚌 Amazon SQS transport for Rebus
C#
16
star
15

Rebus.PostgreSql

🚌 PostgreSQL persistence for Rebus
C#
14
star
16

Injectionist

💉 Lean mean decorating injection machine
C#
13
star
17

Rebus.Async

🚌 Experimental async extensions for Rebus
C#
13
star
18

Mongrow

🌿 MongoDB migration library
C#
12
star
19

Rebus.OpenTelemetry

C#
12
star
20

Rebus.Autofac

🚌 Autofac container adapter for Rebus
C#
11
star
21

RebusDemos

🚌 Code samples used for presentations
C#
9
star
22

Tiket

❌ DEPRECATED 🎫 Simple token thing
C#
9
star
23

Rebus.Msmq

🚌 MSMQ transport for Rebus
C#
8
star
24

Rebus.TransactionScopes

🚌 System.Transactions.TransactionScope enlistment helper for Rebus
C#
8
star
25

Shtern

⭐ Provides a way to read a password from the command line in a Console Application without revealing it
C#
8
star
26

Rebus.AzureQueues

🚌 Azure Storage Queues transport implementation for Rebus
C#
7
star
27

Rebus.Serilog

🚌 Serilog logging integration for Rebus
C#
7
star
28

Rebus.MsgPack

🚌 MessagePack message serializer for Rebus
C#
6
star
29

Rebus.MySql

🚌 MySQL integration for Rebus
C#
6
star
30

Rebus.CircuitBreaker

🚌 Circuit breaker plugin for Rebus
C#
6
star
31

Rebus.AutoScaling

🚌 Experimental auto-scaling extension for Rebus
C#
5
star
32

Rebus.Oracle

🚌 Oracle transport for Rebus
C#
5
star
33

MongolianBarbecue

🔥 MongoDB-based message queue
C#
5
star
34

Nub

🔑 Keyed service extension for Microsoft's service provider
C#
5
star
35

Rebus.SimpleInjector

🚌 SimpleInjector container adapter for Rebus
C#
5
star
36

Owino

❌ DEPRECATED 🍸 OWIN extensions
C#
5
star
37

Matcha

👀 Wildcard pattern matcher
C#
5
star
38

Rebus.AzureStorage

❌ DEPRECATED 🚌 Azure Storage transport, databus storage, etc. for Rebus
C#
4
star
39

Rebus.MongoDb

🚌 MongoDB persistence implementations for Rebus
C#
4
star
40

Rebus.Protobuf

🚌 Protobuf message serializer for Rebus
C#
4
star
41

Rebus.TestHelpers

🚌 Test helpers for Rebus (i.e. fake bus, saga fixture, etc.)
C#
4
star
42

Rebus.AmazonS3

🚌 Amazon S3 data bus storage for Rebus
C#
4
star
43

Rebus.NLog

🚌 NLog logger integration for Rebus
C#
4
star
44

Rebus.GoogleCloudPubSub

🚌 Google Cloud Pub Sub transport for Rebus (under development)
C#
4
star
45

Aversion

🔧 AssemblyInfo version attribute file generator
C#
4
star
46

RebusSnoop

👀 This is the home of Rebus Snoop - the MSMQ queue inspector thingie that is not perfect, but still good enough for a few purposes
C#
4
star
47

Rebus.RavenDb

🚌 RavenDB persistence for Rebus
C#
3
star
48

FleetManager

🚌 Fleet Manager issue tracker and doco wiki
3
star
49

Rebus.ActiveMq

❌ DEPRECATED 🚌 ActiveMQ transport for Rebus (WIP)
C#
3
star
50

Poker

👈 app.config XML poker
C#
3
star
51

Rebus.Microsoft.Extensions.Logging

🚌 Microsoft Logging Extensions integration for Rebus
C#
3
star
52

DbWrestler

🥫 Makes it easy to wrestle MSSQLLocalDB from automated database integration tests
C#
3
star
53

Rebus.AzureBlobs

🚌 Azure Blobs-based databus storage for Rebus
C#
3
star
54

Rebus.StructureMap

❌ DEPRECATED 🚌 StructureMap container adapter for Rebus
C#
3
star
55

Rebus.Microsoft.Extensions.Configuration

🚌 Microsoft configuration extensions for Rebus
C#
2
star
56

Spork

🍴 CLI tool that combines APIs to generate Rebus repo reports
C#
2
star
57

Rebus.Ninject

❌ DEPRECATED 🚌 Ninject container adapter for Rebus
C#
2
star
58

Rebus.Wire

❌ DEPRECATED 🚌 Wire serializer for Rebus
C#
2
star
59

Clipperino

✂️ Makes it possible to work with the Windows Clipboard e.g. from a console application
C#
2
star
60

Rebus.Consul

❌ DEPRECATED 🚌 Consul integration for Rebus
C#
2
star
61

Rebus.DryIoc

🚌 DryIoc container adapter for Rebus
C#
2
star
62

Rebus.UnitOfWork

🚌 Unit of work helper for Rebus
C#
2
star
63

Rebus.MessageValidation

❌ DEPRECATED 🚌 Message validation plugin for Rebus
Batchfile
2
star
64

Swindler

🎩 Tricks the configuration manager into loading a custom App.config if you want
C#
2
star
65

Rebus.CastleWindsor

❌ DEPRECATED 🚌 Castle Windsor container adapter for Rebus
C#
2
star
66

Testy

🔬 Nifty opinionated test helpers for NUnit
C#
2
star
67

ZipperBlobber

📂 Zipping Blobbing CLI app
C#
2
star
68

Rebus.Hyperion

🚌 Hyperion message serializer for Rebus
C#
1
star
69

Bob

🔩 Builder thing that is used to build all Rebus projects
C#
1
star
70

Rebus.AzureTables

🚌 Table-based saga storage for Rebus
C#
1
star
71

Rebus.Log4net

🚌 Log4net logging integration for Rebus
C#
1
star
72

Rebus.SqlServerCe

❌ DEPRECATED 🚌 SQL Server CE persistence for Rebus
C#
1
star
73

Rebus.Jil

🚌 Jil serializer for Rebus
C#
1
star
74

Rebus.LightInject

🚌 LightInject container adapter for Rebus
C#
1
star
75

Rebus.Amqp

❌ DEPRECATED 🚌 AMQP-compliant transport implementation for Rebus (WIP)
C#
1
star
76

Rebus.Recipes

❌ DEPRECATED 🚌 Nifty extensions and helpers for Rebus
C#
1
star
77

Rebus.LegacyCompatibility

❌ DEPRECATED 🚌 Legacy compatibility feature for Rebus
C#
1
star
78

Rebus.Ceras

🚌 Ceras serializer for Rebus
C#
1
star
79

Rebus.XmlConfig

🚌 Endpoint mappings configuration helper for Rebus
C#
1
star
80

Rebus.Unity

❌ DEPRECATED 🚌 Unity container adapter for Rebus
C#
1
star
81

Rebus.Gateway

🚌 Simple HTTP gateway for Rebus
1
star