您可以在运行时确定目标是队列还是主题?

时间:2014-05-08 00:11:59

标签: java jms ibm-mq jms-topic

我遇到了一个有趣的挑战,即必须在一个环境中向主题发布消息,并且必须将消息发送到另一个环境中的队列。这两种环境都需要具有相同的代码库。有没有办法在运行时确定目标是队列还是主题,并调用代码来相应地发送到主题或队列?

2 个答案:

答案 0 :(得分:2)

队列和主题扩展目标。因此,如果您有一个目标实例,则可以使用instanceof来确定它是否为“队列”或“主题”

答案 1 :(得分:2)

在回答这个问题之前,有必要先问一下,您认为代码对于队列与主题的不同之处是什么?如果WMQ类不到十年,它们使用自JMS 1.1以来可用的统一模型。不是在queueConnectionFactorytopicConnectionFactory之间进行选择,而是让代码实例化通用connectionFactory。而不是实例化queuetopic对象,让代码实例化destination对象。那时你真的不在乎目的地下的东西是队列还是主题。

请参阅IBM WebSphere Developer Technical Journal: Running a standalone Java application on WebSphere MQ V6.0以获取完整说明,包括展示其完成方式的示例代码来源。