5

I am looking into using a product such as RabbitMQ or ActiveMQ. I see that there is, to a certain extent, a level of support in these products for AMQP v1.0.

However, I am struggling to find a client for using AMQP 1.0 with .NET. So far the only one I have come across is Apache Qpid. However, having to install all its dependencies along with building it all rather than just using something like NuGet to obtain the client library all seems a bit cumbersome and doesn't give me confidence in support moving forward.

Microsoft Azure Service Bus has AMQP 1.0 support and has a client but it appears to be specific to that product as far as I can tell, which is a shame as I thought one of the benefits of AMQP was the ease to switch out different brokers.

From what I have read on RabbitMQ it appears that they are not committing to building a client for AMQP 1.0.

Does anyone have any thoughts on the above and whether there are any clients I have overlooked?

Many thanks in advance

pinepain
  • 12,453
  • 3
  • 60
  • 65
user3219261
  • 51
  • 1
  • 2

2 Answers2

6

The most complete AMQP 1.0 client for .NET is "Amqp.Net Lite" [1]. I'm aware of people having success with this against Azure Service Bus, Qpid C++ broker and ActiveMQ.

Regards, Dave.

[1] https://amqpnetlite.codeplex.com/

David Ingham
  • 361
  • 3
  • 4
2

AMQP 0.9.1, that RabbitMQ implements, and AMQP 1.0 are very different beasts, so different that many have argued that they shouldn't really be linked in any way. The AMQP 0.9.1 protocol effectively has two parts: the wire protocol and the broker protocol. My understanding is that AMQP 1.0 only describes the wire protocol, thus leaving vendors to specify their broker architecture independently of the protocol and thus ensuring lock-in.

If your plan is to choose a single client library which you can then use to connect to both Azure SB and RabbitMQ, then I think you're likely to be disappointed. Your best bet for interoperability is to stick with 0.9.1.

For more information, Pieter Hintjens has an excellent blog post on this here: http://hintjens.com/blog:28

Mike Hadlow
  • 9,427
  • 4
  • 45
  • 37
  • Hi Mike, thanks for the response. I have read the blog post you linked to along with numerous other articles/posts that give a slightly different opinion, such as those by John O'Hara. I think the plan is to select a platform that is going to support future standards. For me it seems as though the OASIS backed AMQP v1.0. should be something that is high on the list of considerations. However, as you have suggested there are great differences and this seems to have caused a certain level of disagreement in the industry. I am just trying to understand what client side offerings there are on .NET – user3219261 Jan 21 '14 at 13:23
  • On a personal level, if you're looking at 0.9.1 clients to work with RabbitMQ, have a look at my EasyNetQ (http://easynetq.com) library, it could save you lots of low level pain. There's also NServiceBus and MassTransit that provide higher level abstractions on top of AMQP. – Mike Hadlow Jan 21 '14 at 14:55
  • Thanks again, I have read some of your posts on EasyNetQ and saw you present at QCon last year. I am currently looking at Apache Qpid to see if that offers me a client library I can use with AMQP 1.0. – user3219261 Jan 22 '14 at 12:50