我正在尝试从队列中接收消息并将其发布到主题中。我有一个QueueSession实例,但它不能用于创建主题。如果我理解正确,QueueSession仅用于从队列接收消息并将消息发送到另一个队列。我该如何混淆 - 从队列接收并在单个会话中将其发布到主题中?
答案 0 :(得分:1)
您必须为目标主题创建TopicSession和TopicPublisher,但在队列消息处理程序之外执行此操作 - 例如,在创建QueueSession并订阅队列的同时执行此操作。在队列消息处理程序中,您将在TopicPublisher实例上调用publish(message)
。
答案 1 :(得分:1)
忘记所有特定于域的类,并使用JMS 1.1中提供的统一域。按如下方式替换类:
切换到统一域后,应用程序无需知道目标是队列还是主题。例如,如果您的应用有两个托管对象myInputDest
和myOuputDest
,您可以将其中任何一个分配给队列或托管对象定义中的主题(有时称为.bindings文件)组合。您可以从队列中读取并写入主题,从主题读取并写入队列,进行队列到队列或主题到主题,所有这些都在运行时解决,并且可以在程序调用之间进行更改通过更改托管对象。
有一些示例代码在IdeveloperWorks文章 Running a standalone Java application on WebSphere MQ V6.0
中演示了这一点