使用哪个 JMS 客户端库?

Which JMS client library to use?

我们想从我们的 java 实现中订阅一个 JMS 主题。 JMS 主题团队建议使用 tibco 库。我只想问是否必须使用 server/topic 用于发送消息的相同库,或者我可以使用任何库而不考虑 JMS 服务器实现吗?

JMS 是一个 API 规范。它不包含有线格式,因此 JMS 提供者可以随意实现它。因此,您使用的 JMS 客户端类型取决于您使用的提供商(例如,如果您使用 Tibco 代理,那么您将使用 Tibco 客户端)。但是,也有像 Apache ActiveMQ Artemis which support multiple JMS implementations (i.e. OpenWire & core). There's also the Qpid JMS client 这样的经纪人应该在 any 支持 AMQP 的经纪人上工作。

JMS 提供商,还有 many,希望您使用 他们的 产品。因此,您必须为所有客户使用同一家公司的图书馆。例如。 EMS 客户端不能与 ActiveMQ Broker 一起工作,反之亦然。通常,'wire format' 是专有的,因此不可能只针对 TIBCO EMS/Solace/MQ 有线格式进行编码。

这种情况使用 AMQP 或 MQTT 解决方案会好一些。这里的连线格式是 public 知识,任何人都可以构建自己的 AMQP 客户端库,并且它们可以一起工作。但话又说回来,AMQP API 通常是不同的。所以最佳点可能是 JMS over AMQP(例如 QPid)。