2

I am new to working with AMQP and looking into platform neutral way to work with messaging, where we have decided to work with AMQP in Java application. But as I read AMQP is wire level protocol and it delivers the middleware equivalent of HTTP at link http://www.amqp.org/resources/developer-faqs and like HTTP(GET, POST, PUT, DELETE - only I am assuming, not sure exactly) it has standard message types with reference to section AMQP performatives and the link protocol at http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol and also something of request-response session. Concepts like Exchange and routing key with binding queue at http://www.wmrichards.com/amqp.pdf But when I search across examples with AMQP-JAVA all I come across are normal JMS API examples with ActiveMQ or QPid where JMS concepts are used like destination, connection, session etc. Pardon me if I am asking a very generic question, but I really want to understand AMQP in JAVA with demonstrates the keyword wire-level protocol Please suggest some examples or references or let me know if I am missing altogether something here

Thanks

Chakradhar K
  • 501
  • 13
  • 40
  • RabbitMQ and other brokers do not implement the latest AMQP spec. For example RabbitMQ uses AMQP 0-9-1. For reasons I don't know, the AMQP committee totally changed the paradigm with the final version and dropped the whole message oriented middleware (MOM) concept parts and restricted the spec to the wire level protocol. That's probably why there's a mismatch between the examples and what you can read on the AMQP webpage. – Bengt Aug 07 '14 at 23:10
  • Thanks Bengt. Can you please suggest any open source AMQP broker provider which fully adheres to AMQP standard and works with JAVA – Chakradhar K Aug 08 '14 at 05:20
  • Wikipedia has a nice overview: http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol#AMQP_1.0_broker_implementations – Bengt Aug 08 '14 at 08:45
  • I now get it that Exchanges, Routing were all defined in AMQP upto 0-9-1 which is still promoted by some broker providers like RabbitMQ, but latest final approved version of 1.0 which is implemented by ActiveMQ, QPid etc. And 0-9-1 and 1.0 are very much different, as 0-9-1 states communication protocol and broker implmentations also, but 1.0 only emphasizes on communication protocol being used like HTTP. So may be thats the reason I see differences in examples of various vendors. The link http://predic8.com/activemq-hornetq-rabbitmq-apollo-qpid-comparison.htm helped me get an overview – Chakradhar K Aug 08 '14 at 10:15
  • Yes, that's correct :-) Glad I could help you – Bengt Aug 08 '14 at 12:15
  • @Bengt RabbitMQ implements the AMQP 1.0 spec See: http://www.rabbitmq.com/protocols.html – old_sound Aug 11 '14 at 13:24
  • Why do you need to understand the "wire level protocol"? That's something an AMQP client implements for you, so you don't have to worry about it. – old_sound Aug 11 '14 at 13:26
  • Citation ‘RabbitMQ supports AMQP 1.0 via a plugin.‘ The semantics used for exchanges and queues and so on are from AMQP 0-9-1. But you can of course use the AMQP 1 wire level protocol in conjunction with these semantic artifacts. – Bengt Aug 11 '14 at 19:50

1 Answers1

1

Thanks all for responses, comments. I now understand that "wire level protocol" is something like HTTP which is implemented by AMQP clients. I was confused by watching some AMQP client examples of 0-9-1 and some of 1.0. But going through AMQP specifications, 0-9-1 and 1.0 which have been largely changed, Rabbit MQ examples, and Active MQ AMQP examples I figured out to some extent.

AMQP being wire level protocol, it facilitates any broker implementations to work with any client implementations as long as they both adhere to AMQP protocol for communication.

References http://hintjens.com/blog:28

http://it.toolbox.com/blogs/open-source-smb/whats-the-future-of-amqp-44450

http://kellabyte.com/2012/10/20/clarifying-amqp/

Chakradhar K
  • 501
  • 13
  • 40