是否有适用于所有AMQP代理的JMS API /客户端?

时间:2012-01-30 20:15:05

标签: jms rabbitmq amqp qpid

JMS是供应商中立的API,用于在Java空间中进行消息传递。 AMQP的使命是“成为所有消息传递中间件之间互操作性的标准协议”。我正在寻找可在AMQP供应商之间互操作的JMS客户端实现。具体来说,如果能与RabbitMQ或Qpid交谈,那就太好了。

3 个答案:

答案 0 :(得分:5)

Qpid JMS客户端(为了避免工作,与OpenAMQ JMS客户端相同的代码)在AMQP 0-9-1中编码JMS。我无法代表客户端的质量,但这应该适用于Qpid Java版和RabbitMQ。

然而,它不会是一个完全无损的编码 - 在JMS中有一些API不能传递给AMQP。 Qpid可能会为那些人提供垫片; RabbitMQ基本上没有。我正在考虑'nolocal'和选择器。可能还有其他人。

(实际上它/使用AMQP标头交换的种类/选择器,但结果可能不是您对JMS的期望)

努力创建一个使用AMQP 1.0的JMS客户端。但是没有支持AMQP 1.0的Qpid和RabbitMQ版本,这毕竟是0-9-1和其他早期版本的完全不同的协议。

答案 1 :(得分:1)

我最近使用了Apache Qpid客户端库(qpid-client-0.32-bin.tar.gz)和RabbitMQ(AMQP 0-9-1),它工作得非常好。

如果你想连接到AMQP 1.0 Broker,你应该使用这个Qpid lib(apache-qpid-jms-0.1.0-bin.tar.gz)

这两个lib都可以从这里下载: http://qpid.apache.org/download.html

答案 2 :(得分:0)

Qpid本身有一个JMS客户端。我从未使用它,但它在AMQP客户端API下列出

http://qpid.apache.org/