One really nice feature of Rhino Service Bus is the notion of the one way bus. What is that? It is a miniature implementation of the bus that supports only sending messages, not receiving them. In what world is this useful?
It turn out, it quite a few. One way bus is usually used for web apps that just send commands / events to another system, and have no need to interact with the bus other than that, or for command line tools that just send a message, etc. The advantage of the one way bus is that you don’t need your own endpoint to use it, you can just start it, send some messages, and go away.
Here is how you set it up. As usual, we start from the configuration (this assumes you have the Raven.ServiceBus.Castle nuget package):
<?xml version="1.0"?> <configuration> <configSections> <section name="rhino.esb" type="Rhino.ServiceBus.Config.BusConfigurationSection, Rhino.ServiceBus"/> </configSections> <rhino.esb> <messages> <add name="HibernatingRhinos.Orders.Backend.Messages" endpoint="msmq://localhost/Orders.Backend"/> </messages> </rhino.esb> </configuration>
You might note that we don’t have any bus/endpoint configuration, only the list of message owners.
Now, the next step is just to create the actual one way bus:
var container = new WindsorContainer(); new OnewayRhinoServiceBusConfiguration() .UseCastleWindsor(container) .Configure(); var onewayBus = container.Resolve<IOnewayBus>(); onewayBus.Send(new TestMsg { Name = “ayende” });
And that is all…