【问题标题】:Can you determine if a destination is a queue or topic at runtime?您能否在运行时确定目标是队列还是主题?
【发布时间】:2014-06-25 04:27:58
【问题描述】:

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

【问题讨论】:

    标签: java jms ibm-mq jms-topic


    【解决方案1】:

    队列和主题扩展目的地。因此,如果您有一个 Destination 实例,您可以使用 instanceof 来确定它是队列还是主题

    【讨论】:

    • 感谢您的回复。问题是,我不知道目的地 X 是队列还是主题。我能否为 X 创建一个目标对象,然后检查它是队列还是主题并相应地调用代码?将不胜感激您的进一步想法。
    • Session 对象有两个方法#createTopic(String) 和#createQueue(String)。因此,一般来说,仅使用标准 JMS 答案是否定的。您应该提前知道目的地的类型。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2016-05-27
      • 2014-02-20
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多