JMS replyTo,在发送请求的不同JMS提供程序中创建临时队列

时间:2018-04-05 07:42:44

标签: java-ee jms weblogic message-queue messaging

使用JMS,有一个临时队列的概念。它是一个队列,仅存在于特定的JMS连接中。它由客户端在事务期间创建,并在关闭连接时被销毁。临时队列本身可以用作JMS replyTo地址JMS API。使用JMS实现请求 - 回复模式是一种方便的方法。

但是可以在不同的WebLogic域中打开与两个不同的 JMS服务器的JMS连接,在其他JMS服务器中创建临时队列并将其用作replyTo地址消息发送到另一个JMS服务器?此外,如果重要的话,两个WebLogic域中的JMS服务器都是群集的(分布式目标)。

enter image description here

  1. 对于事务,Service 1在其JMS提供程序中创建临时队列
  2. 服务1将消息发送到不同域中的另一个JMS提供程序。消息包含临时队列作为replyTo地址。服务1阻止,直到回复消息到达临时Qeueue。
  3. 服务2 MDB处理传入的请求消息
  4. 服务2向服务1的临时Qeueue发送回复消息。
  5. 服务1处理传入的回复消息。
  6. 两种服务都会有多个实例。此外,在返回到服务1之前,消息可以从服务2进一步路由到另一个域。临时队列replyTo地址必须忍受路由中的所有“跳”。纯Java EE可以实现吗?

1 个答案:

答案 0 :(得分:0)

由于JMS规范未定义JMSReplyTo与物理位置之间的任何链接,因此无法简单地使用Destination消息头来实现此处的操作。 Destination基本上只是对将要发送消息的特定于实现的名称的引用。也就是说,您可以在消息中包含其他属性,其中包含连接到正确远程服务器所需的详细信息(例如,连接工厂的名称和JNDI查找的IP /端口)。