我们想从Java实现中订阅JMS主题。 JMS主题小组建议使用tibco库。我只想问一下是否必须使用与服务器/主题用于发送消息的库相同的库,还是可以使用任何库而不考虑JMS服务器的实现?
答案 0 :(得分:3)
JMS是API规范。它不包含有线格式,因此JMS提供者可以按自己的意愿自由实现它。因此,您使用的JMS客户端的类型由您使用的提供程序决定(例如,如果您使用Tibco代理,则应使用Tibco客户端)。但是,也有像Apache ActiveMQ Artemis这样的代理,它们支持多种JMS实现(即OpenWire和内核)。还有Qpid JMS client可以在任何支持AMQP的任何经纪人上使用。
答案 1 :(得分:2)
JMS提供者,还有many,希望您使用他们的产品。因此,您必须为所有客户使用同一公司的资料库。例如。 EMS客户端不能与ActiveMQ Broker一起使用,反之亦然。通常,“有线格式”是专有的,因此不可能仅根据TIBCO EMS / Solace / MQ有线格式进行编码。
使用AMQP或MQTT解决方案,这种情况要好一些。这里的有线格式是公共知识,任何人都可以构建自己的AMQP客户端库,并且他们都可以一起工作。但是话又说回来,AMQP API通常是不同的。因此,最佳的选择可能是JMS over AMQP(例如QPid)。