Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从队列接收并将其发布到主题中?_Java_Session_Jms_Message Queue - Fatal编程技术网

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

Java 如何从队列接收并将其发布到主题中?,java,session,jms,message-queue,Java,Session,Jms,Message Queue,我正在尝试从队列接收消息并将其发布到主题中。我有一个QueueSession实例,但不能用于创建主题。如果我理解正确,QueueSession仅用于从队列接收消息并将消息发送到另一个队列。如何将其混合在一起—从队列接收并在单个会话中将其发布到主题中?您必须为目标主题创建and,但在队列消息处理程序之外执行此操作—例如,在创建QueueSession和订阅队列的同时执行此操作。在队列消息处理程序中,您将在TopicPublisher实例上调用publish(message)。忘记所有特定于域的类,

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

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

忘记所有特定于域的类,使用JMS 1.1中提供的统一域。替换以下类别:

  • QueueConnectionFactory-->连接工厂
  • 队列会话-->会话
  • 队列-->目标
一旦切换到统一域,应用程序就不需要知道目标是队列还是主题。例如,如果您的应用程序有两个托管对象
myInputDest
myOutDest
,则可以将它们任意组合分配给托管对象定义(有时称为.bindings文件)中的队列或主题。您可以从队列中读取并写入主题,从主题中读取并写入队列,从队列到队列或从主题到主题,所有这些都在运行时得到解决,并且只需更改托管对象即可在程序调用之间进行更改


IdeveloperWorks文章中有一些示例代码演示了这一点

,您是说我并行维护两个会话(TopicSession和QueueSession)?是的。QueueSession用于接收队列上的消息,TopicSession用于再次发布主题上的消息