如何从队列中接收并将其发布到主题中?

时间:2011-03-03 08:01:40

标签: java session jms message-queue

我正在尝试从队列中接收消息并将其发布到主题中。我有一个QueueSession实例,但它不能用于创建主题。如果我理解正确,QueueSession仅用于从队列接收消息并将消息发送到另一个队列。我该如何混淆 - 从队列接收并在单个会话中将其发布到主题中?

2 个答案:

答案 0 :(得分:1)

您必须为目标主题创建TopicSessionTopicPublisher,但在队列消息处理程序之外执行此操作 - 例如,在创建QueueSession并订阅队列的同时执行此操作。在队列消息处理程序中,您将在TopicPublisher实例上调用publish(message)

答案 1 :(得分:1)

忘记所有特定于域的类,并使用JMS 1.1中提供的统一域。按如下方式替换类:

  • QueueConnectionFactory - >连接工厂
  • QueueSession - >会话
  • 队列 - >目标

切换到统一域后,应用程序无需知道目标是队列还是主题。例如,如果您的应用有两个托管对象myInputDestmyOuputDest,您可以将其中任何一个分配给队列或托管对象定义中的主题(有时称为.bindings文件)组合。您可以从队列中读取并写入主题,从主题读取并写入队列,进行队列到队列或主题到主题,所有这些都在运行时解决,并且可以在程序调用之间进行更改通过更改托管对象。

有一些示例代码在IdeveloperWorks文章 Running a standalone Java application on WebSphere MQ V6.0

中演示了这一点