Dom.WebApi & Dom.MessageQueues are the two differenct assemblies/projects.
We are using TopShelf as well. Here is the code
using System.Diagnostics;
using MassTransit;
using Microsoft.Practices.Unity;
using RabbitMQ.Client;
namespace Dom.MessageQueues.Queues
{
public class QueZero : IQue<MyMessage>
{
private string _recieveFromUri;
private IServiceBus _serviceBus;
private IPlayer _player;
private IQue<AnotherMessage> _queOne;
private IUnityContainer _container;
public QueZero(string recieveFromUri)
{
_recieveFromUri = recieveFromUri;
}
public QueBit(string recieveFromUri, IUnityContainer container)
{
_recieveFromUri = recieveFromUri;
_container = container;
}
//TOPSHELF
public void Start( )
{
_container.RegisterInstance<IServiceBus>(ServiceBusFactory.New(sbc =>
{
sbc.UseRabbitMq();
sbc.ReceiveFrom(_recieveFromUri);
//tell service bus configurator to subscribe the types registered in container
sbc.Subscribe(s => s.LoadFrom(_container));
}));
//register instance of service bus with UnityContainer
//container.RegisterInstance<IServiceBus>(_serviceBus);
}
public void PublishToQue(MyMessage aMessage)
{
_serviceBus.Publish<MyMessage>(aMessage);
}
//TOPSHELF
public void Stop()
{
_serviceBus.Dispose();
}
}
}