RestBus is a high performance messaging library that enables you to consume ASP.NET Core, Web API and ServiceStack service endpoints via RabbitMQ.

With RestBus, queuing or sending a message asynchronously is as simple as:

var amqpUrl = " amqp://localhost:5672 " ; //AMQP URI for RabbitMQ server var serviceName = " samba " ; //The unique identifier for the target service var client = new RestBusClient( new BasicMessageMapper(amqpUrl, serviceName)); //Call the /hello/random endpoint var response = await client.GetAsync( " /hello/random " );

Does that look familiar?

If you're conversant with .NET's HttpClient class, you'll be right at home with the RestBusClient class. In fact they both derive from the same base class.

The /hello/random endpoint is an ordinary web service endpoint in an ASP.NET Core, Web API or ServiceStack service.

RestBus routes the request over RabbitMQ, invokes the endpoint and returns the response, without ever hitting the HTTP transport.

Why do I need this?

Using RabbitMQ from .NET can be a frustrating experience. RestBus makes it ridiculously easy.

For more reasons, see Why RestBus?

Getting Started

Features

Zero Configuration

You don't need to configure the RabbitMQ server. RestBus automatically creates exchanges, queues and other resources as needed.

Use your Existing Web Services

Your services can still be consumed via HTTP while supporting RabbitMQ calls or you can turn off the HTTP interface.

Migrating your services to a message oriented architecture is as easy as writing a few lines of code.

Asynchronous Messaging

Enjoy optimum efficiency in service request processing as endpoints can now be invoked asynchronously.

Horizontal scaling

Scaling your services horizontally is as easy as launching new instances.

It's Fast

RestBus compares very favorably with other messaging libraries, and is the fastest library in many cases.

For more details, see the benchmarks project.

Customizable

Roll your own MessageMapper class for custom messaging behavior.

How it works

RestBus follows the RPC messaging style. For more details, see How It Works.

Advanced Scenarios

License

Apache License, Version 2.0