All Projects → Shuttle → Shuttle.esb

Shuttle / Shuttle.esb

Licence: other
A highly extensible service bus implementation.

Projects that are alternatives of or similar to Shuttle.esb

Rabbitevents
Nuwber's events provide a simple observer implementation, allowing you to listen for various events that occur in your current and another application. For example, if you need to react to some event published from another API.
Stars: ✭ 84 (+18.31%)
Mutual labels:  rabbitmq, queue
Tesseract
A set of libraries for rapidly developing Pipeline driven micro/macroservices.
Stars: ✭ 20 (-71.83%)
Mutual labels:  queue, rabbitmq
Garagemq
AMQP message broker implemented with golang
Stars: ✭ 153 (+115.49%)
Mutual labels:  rabbitmq, queue
Laravel Queue Rabbitmq
RabbitMQ driver for Laravel Queue. Supports Laravel Horizon.
Stars: ✭ 1,175 (+1554.93%)
Mutual labels:  rabbitmq, queue
Node Celery
Celery client for Node.js
Stars: ✭ 648 (+812.68%)
Mutual labels:  rabbitmq, queue
python-asynchronous-tasks
😎Asynchronous tasks in Python with Celery + RabbitMQ + Redis
Stars: ✭ 37 (-47.89%)
Mutual labels:  queue, rabbitmq
leek
Celery Tasks Monitoring Tool
Stars: ✭ 77 (+8.45%)
Mutual labels:  queue, rabbitmq
Swarrot
A lib to consume message from any Broker
Stars: ✭ 350 (+392.96%)
Mutual labels:  rabbitmq, queue
Machinery
Machinery is an asynchronous task queue/job queue based on distributed message passing.
Stars: ✭ 5,821 (+8098.59%)
Mutual labels:  rabbitmq, queue
Servicebus
Simple service bus for sending events between processes using amqp.
Stars: ✭ 415 (+484.51%)
Mutual labels:  service-bus, rabbitmq
Yii2 Queue
Yii2 Queue Extension. Supports DB, Redis, RabbitMQ, Beanstalk and Gearman
Stars: ✭ 977 (+1276.06%)
Mutual labels:  rabbitmq, queue
Easybus
Easy integration with multiple messaging frameworks including RabbitMQ, Oracle AQ, ActiveMQ
Stars: ✭ 8 (-88.73%)
Mutual labels:  service-bus, rabbitmq
Yii Queue
Queue extension for Yii 3.0
Stars: ✭ 38 (-46.48%)
Mutual labels:  rabbitmq, queue
Python Devops
gathers Python stack for DevOps, these are usually my basic templates use for my implementations, so, feel free to use it and evolve it! Everything is Docker!
Stars: ✭ 61 (-14.08%)
Mutual labels:  rabbitmq
Rabbitmq Server
Open source RabbitMQ: core server and tier 1 (built-in) plugins
Stars: ✭ 9,064 (+12666.2%)
Mutual labels:  rabbitmq
Docker Laravel Queue Worker
A docker image for working with queues being monitored by supervisor as recommended by laravel.
Stars: ✭ 60 (-15.49%)
Mutual labels:  queue
Flume Ng Rabbitmq
Flume plugin for RabbitMQ
Stars: ✭ 59 (-16.9%)
Mutual labels:  rabbitmq
Spring Examples
SpringBoot Examples
Stars: ✭ 67 (-5.63%)
Mutual labels:  rabbitmq
Wx Queue Request
控制微信小程序 wx.request 并发请求数量
Stars: ✭ 65 (-8.45%)
Mutual labels:  queue
Kubemq
KubeMQ is Enterprise-grade message broker native for Docker and Kubernetes
Stars: ✭ 58 (-18.31%)
Mutual labels:  queue

Shuttle.Esb

A highly flexible and free .NET open-source enterprise service bus.

Documentation

There is extensive documentation on our site and you can make use of the samples to get you going.

Overview

Start a new Console Application project and select a Shuttle.Esb queue implementation from the [supported queues]({{ site.baseurl }}/packages/#queues):

Install-Package Shuttle.Esb.Msmq

Now we'll need select one of the supported containers:

Install-Package Shuttle.Core.Autofac

We'll also need to host our endpoint using the service host:

Install-Package Shuttle.Core.ServiceHost

Next we'll implement our endpoint in order to start listening on our queue:

internal class Program
{
	private static void Main()
	{
		ServiceHost.Run<Host>();
	}
}

public class Host : IServiceHost
{
	private IServiceBus _bus;

	public void Start()
	{
		var containerBuilder = new ContainerBuilder();
		var registry = new AutofacComponentRegistry(containerBuilder);

		ServiceBus.Register(registry);

		var resolver = new AutofacComponentResolver(containerBuilder.Build());

		_bus = ServiceBus.Create(resolver).Start();
	}

	public void Stop()
	{
		_bus.Dispose();
	}
}

A bit of configuration is going to be needed to help things along:

<configuration>
	<configSections>
		<section name="serviceBus" type="Shuttle.Esb.ServiceBusSection, Shuttle.Esb"/>
	</configSections>

	<serviceBus>
		<inbox 
			workQueueUri="msmq://./shuttle-server-work" 
			deferredQueueUri="msmq://./shuttle-server-deferred" 
			errorQueueUri="msmq://./shuttle-error" />
	</serviceBus>
</configuration>

Send a command message for processing

using (var bus = ServiceBus.Create(resolver).Start())
{
	bus.Send(new RegisterMemberCommand
	{
		UserName = "Mr Resistor",
		EMailAddress = "[email protected]"
	});
}

Publish an event message when something interesting happens

using (var bus = ServiceBus.Create(resolver).Start())
{
	bus.Publish(new MemberRegisteredEvent
	{
		UserName = "Mr Resistor"
	});
}

Subscribe to those interesting events

resolver.Resolve<ISubscriptionManager>().Subscribe<MemberRegisteredEvent>();

Handle any messages

public class RegisterMemberHandler : IMessageHandler<RegisterMemberCommand>
{
	public void ProcessMessage(IHandlerContext<RegisterMemberCommand> context)
	{
		Console.WriteLine();
		Console.WriteLine("[MEMBER REGISTERED] : user name = '{0}'", context.Message.UserName);
		Console.WriteLine();

		context.Publish(new MemberRegisteredEvent
		{
			UserName = context.Message.UserName
		});
	}
}
public class MemberRegisteredHandler : IMessageHandler<MemberRegisteredEvent>
{
	public void ProcessMessage(IHandlerContext<MemberRegisteredEvent> context)
	{
		Console.WriteLine();
		Console.WriteLine("[EVENT RECEIVED] : user name = '{0}'", context.Message.UserName);
		Console.WriteLine();
	}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].