ServiceConnect 5.0.0 is available at https://www.nuget.org/packages/ServiceConnect
- New in ServiceConnect 5.0.0
- Async consumers
- Priority Queues support
- Bug Fixes
ServiceConnect is a simple, easy to use asynchronous messaging framework for .NET.
- Support for many well-known Enterprise Integration Patterns
- Point to Point
- Publish/Subscribe
- Process Manager
- Recipient List
- Scatter Gather
- Routing Slip
- Message Aggregation
- Content-Based Router
- Streaming
- Retries
- Auditing
- .NET Core
- SSL Support
- Polymorphic message dispatch
- Multi-threaded consumers
- Intercept message-processing pipline with custom filters. See Filters sample application for a complete example.
ServiceConnect (recently renamed from R.MessageBus) has been first released in May 2014. The current version is used by a number of high-profile financial applications in production environments. Public API is stable and no major changes are planned in the next version.
In this example we simply send a message from one endpoint and consume the same message on another endpoint. See Point To Point sample application for a complete example.
YourMessage
is a .Net class that inherits from
ServiceConnect.Interfaces.Message
base class
public class YourMessage : Message
{
public YourMessage(Guid correlationId) : base(correlationId){}
}
In the standard command line Main
method we start the bus with var bus = Bus.Initialize();
. Calling initialize with no parameters will create an instance of the Bus with default configuration options. Next, we simply send YourMessage
using bus.Send(new YourMessage(id), "YourConsumer");
- where the first argument is an instance of YourMessage
, the second argument, "YourConsumer", is the receiving enpoint name. (We are going to configure "YourConsumer" next).
public class Program
{
public static void Main()
{
var bus = Bus.Initialize();
bus.Send(new YourMessage(Guid.NewGuid()), "YourConsumer");
}
}
Again, we start the bus in the standard command line Main
method. This time, however, with var bus = Bus.Initialize(config => config.SetEndPoint("YourConsumer"));
. Because the method initialize can also take a single lambda/action parameter for custom configuration, we explicitly set the name of the receiving endpoint to "YourConsumer".
public class Program
{
public static void Main()
{
var bus = Bus.Initialize(config => config.SetEndPoint("YourConsumer"));
}
}
Finally, we define a "handler" that will receive the message. The handler is a .NET class that implements ServiceConnect.Interfaces.IMessageHandler<T>
where the generic parameter T
is the type of the message being consumed.
public class YourMessageHandler : IMessageHandler<YourMessage>
{
public void Execute(YourMessage message)
{
Console.WriteLine("Received message - {0}", message.CorrelationId);
}
}