Skip to content
Mogens Heller Grabe edited this page Jul 25, 2016 · 19 revisions

This is a very basic example on how to get started.

Make sure you have MSMQ installed on your machine ("Programs & Features" / "Turn Windows features on or off" / "MSMQ Server Core")

Create a C# project - any kind of project really - and use NuGet to pull down the Rebus package, and then find someplace where you can write the following magic spells (in this case, we're pretending to be in a console application):

// we have the container in a variable, but you would probably stash it in a static field somewhere
using(var activator = new BuiltinHandlerActivator())
{
    Configure.With(activator)
        .Transport(t => t.UseMsmq("inputqueue"))
        .Start();

    Console.WriteLine("Press enter to quit");
    Console.ReadLine();
} //< always dispose bus when your app quits - here done via the container adapter

Try and run the application now - it should log some statements to the screen about having created some worker threads and stuff.

Now try and add the following line right before the Configure.With(...) thing starts:

activator.Register(() => new PrintDateTime());

where the PrintDateTime handler looks like this:

public class PrintDateTime : IHandleMessages<DateTime>
{
    public async Task Handle(DateTime currentDateTime)
    {
        Console.WriteLine("The time is {0}", currentDateTime);
    }
}

and then make your app send the current time to itself by doing something like this (before the Console.ReadLine(), obviously ;)):

var timer = new System.Timers.Timer();
timer.Elapsed += delegate { activator.Bus.SendLocal(DateTime.Now).Wait(); };
timer.Interval = 1000;
timer.Start();

which will make the app send the current time to itself every second.

The code shown here can be found in a fully functional and runnable version (using the Windsor container adapter) here: https://github.com/rebus-org/RebusSamples/tree/master/TimePrinter

Clone this wiki locally