0

I'm experimenting with Shuttle-ESB these days. So far I have been able to create components that work on single machine perfectly. However whenever I try to move the components on different machines on the same network it just stops working. The client fails on Bus.Create().

What to do to make Shuttle-ESB create public queues?

Simple Fellow
  • 4,315
  • 2
  • 31
  • 44
  • What queuing mechanism are you using? From your question it seems to be Msmq. The Msmq implementation in Shuttle.Esb.Msmq supports only private queues. You can send to a remote private queue but not read from it. If you need to use public queues (not recommended) you would need another implementation. Another SO question on public/private queues: http://stackoverflow.com/questions/1849989/private-or-public-msmq – Eben Roux Jun 16 '16 at 18:17
  • Yes I'm using MSMQ. They create private queues. so the components work on single machine but when they are moved across the network, the private queue is hidden hence the client fails. – Simple Fellow Jun 17 '16 at 09:43

1 Answers1

2

Any endpoint using Shuttle.Esb.Msmq would require the inbox to be on the local machine. This is due to the fact that a Msmq transaction is used to get the message from the queue via a behind-the-scenes journal queue.

One cannot read remote private transactional queues: https://msdn.microsoft.com/en-us/library/ms699854%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

You will need to have Msmq enabled on the local machine. As I mentioned in the comments, public queues may help but there is currently no implementation and public queues would come with their own set of challenges.

If installing Msmq on the local endpoint machine is a hassle you may want to consider the Shuttle.Esb.RabbitMQ. RabbitMQ is a broker so it does not need to be installed locally; although you may still want to do so to enable/use an outbox (optional).

Eben Roux
  • 12,983
  • 2
  • 27
  • 48