JMS 是 Java 空间中用于消息传递的供应商中立 API。AMQP 的使命是“成为所有消息中间件之间互操作的标准协议”。我正在寻找在 AMQP 供应商之间可互操作的 JMS 客户端实现。具体来说,如果它可以与 RabbitMQ 或 Qpid 对话,那就太好了。
3 回答
Qpid JMS 客户端(为了省力,代码与 OpenAMQ JMS 客户端相同)在 AMQP 0-9-1 中对 JMS 进行编码。我不能说客户端的质量,但这应该适用于 Qpid Java 版和 RabbitMQ。
然而,它不会是一个完全无损的编码——JMS 中有一些 API 位不会传递到 AMQP。Qpid 可能为这些设置了垫片;总的来说,RabbitMQ 没有。我正在特别考虑“nolocal”和选择器。可能还有其他人。
(实际上它 /kind of/ 使用 AMQP 标头交换进行选择器,但结果可能不是您对 JMS 的期望)
正在努力创建一个使用 AMQP 1.0 的 JMS 客户端。但是没有支持 AMQP 1.0 的 Qpid 或 RabbitMQ 版本,毕竟这与 0-9-1 和其他先前版本完全不同。
我最近将 Apache Qpid 客户端库 (qpid-client-0.32-bin.tar.gz) 与 RabbitMQ (AMQP 0-9-1) 一起使用,效果非常好。
如果你想连接到 AMQP 1.0 代理,你应该使用这个 Qpid 库 (apache-qpid-jms-0.1.0-bin.tar.gz)
这两个库都可以从这里下载:http: //qpid.apache.org/download.html
Qpid 本身有一个 JMS 客户端。我从未使用过它,但它在 AMQP 客户端 API 下列出