【问题标题】:JMS replyTo, create Temporary Queue in different JMS provider where request is sentJMS replyTo,在发送请求的不同 JMS 提供者中创建临时队列
【发布时间】:2018-09-14 22:45:29
【问题描述】:

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

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

  1. 对于事务,服务 1 在其 JMS 提供程序中创建临时队列
  2. 服务 1 向不同域中的另一个 JMS 提供者发送消息。消息包含临时队列作为回复地址。服务 1 阻塞,直到回复消息到达临时队列。
  3. 服务 2 MDB 处理传入的请求消息
  4. 服务 2 向服务 1 的临时队列发送回复消息。
  5. 服务 1 处理传入的回复消息。

这两个服务将有多个实例。此外,在返回到服务 1 之前,消息可能会从服务 2 进一步路由到另一个域。临时队列的回复地址必须承受路由中的所有“跃点”。纯 Java EE 可以做到这一点吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 2013-08-08
      相关资源
      最近更新 更多