5

The JMS is the vendor neutral API to messaging in the Java space. AMQP's mission is "to become the standard protocol for interoperability between all messaging middleware". I'm looking for a JMS client implementation that is interoperable between AMQP vendors. Specifically, it would be nice if it could talk to either RabbitMQ or Qpid.

Hiram Chirino
  • 4,103
  • 1
  • 22
  • 21

3 Answers3

5

The Qpid JMS client (which is, for the avoidance of effort, the same code as the OpenAMQ JMS client) encodes JMS in AMQP 0-9-1. I cannot speak for the quality of the client, but that should work for both Qpid Java edition and RabbitMQ.

It won't be an entirely lossless encoding, however -- there are some bits of API in JMS that don't carry across to AMQP. Qpid may have shims in place for those; RabbitMQ, by and large, doesn't. I am thinking specifically of 'nolocal' and selectors. There are probably others.

(Actually it /kind of/ does selectors using AMQP header exchanges, but the results may not be what you expect from JMS)

There is an effort to create a JMS client that uses AMQP 1.0. But there are no Qpid nor RabbitMQ releases that support AMQP 1.0, which is after all really an entirely different protocol to 0-9-1 and other prior versions.

Michael Bridgen
  • 266
  • 2
  • 2
1

I have used Apache Qpid client library (qpid-client-0.32-bin.tar.gz) with RabbitMQ (AMQP 0-9-1) recently and It worked very well.

If you want to connect to AMQP 1.0 Broker you should use this Qpid lib (apache-qpid-jms-0.1.0-bin.tar.gz)

Both libs can be downloaded from here: http://qpid.apache.org/download.html

Chilcano
  • 158
  • 10
0

Qpid itself has a JMS client. I've never used it, but it is listed here under AMQP Client APIs

http://qpid.apache.org/

Travis Stevens
  • 2,198
  • 2
  • 17
  • 25