【问题标题】:single jms consumer for multiple jms servers多个 jms 服务器的单个 jms 使用者
【发布时间】:2012-12-16 19:38:30
【问题描述】:

我正在使用分布式 jms 队列,而 weblogic 是我的应用服务器。我的集群环境中部署了三个 jms 服务器。例如,生产者只需使用队列 jndi 查找 'udq' 的名称发送消息。现在我已经为每个 jms 服务器关联了一个消费者,并且我能够使用该消息,到目前为止没有问题。

这里有个问题,我可以让一个消费者来消费来自 3 个 jms 服务器的消息吗? weblogic 允许使用以下语法为目标查找命名 jndi @

            qsession1 = qcon1.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            qsession2 = qcon2.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            qsession3 = qcon3.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

            queue1 = (Queue)ctx.lookup("JMSServer-1@UDQ");
            queue2 = (Queue)ctx.lookup("JMSServer-2@UDQ");
            queue3 = (Queue)ctx.lookup("JMSServer-3@UDQ");
            qreceiver1 = qsession1.createReceiver(queue1);
            qreceiver2 = qsession2.createReceiver(queue2);
            qreceiver3 = qsession3.createReceiver(queue3);
            qreceiver1.setMessageListener(this);
            qreceiver2.setMessageListener(this);
            qreceiver3.setMessageListener(this);

            qcon1.start();
            qcon2.start();
            qcon3.start();

我只为上述消费者实现了一个 OnMessage。这不起作用。有什么建议请。。

【问题讨论】:

    标签: jms weblogic middleware


    【解决方案1】:

    不,您不能让消费者从多个 JMS 服务器接收消息。消费者只能从一个 JMS 服务器接收消息。您需要创建多个消费者来接收来自多个 JMS 服务器的消息。

    【讨论】:

    • 感谢 shashi 的回复,我刚刚发现 jni JMSServer-1@UDQ 不起作用,现在我每个 jms 服务器只使用一个消费者。当我启动消费者时,我没有例外。如果我使用 jni 作为 UDQ,这是队列的名称,它可以正常工作。根据 weblogic 文档,语法似乎很好。
    • 如果两个客户端连接到同一个服务器 ex.主机A?如果有 jms.jndi.provider.url=t3://hostA:31122,hostA:31124 它不应该关心服务器。它应该发现来自这两个节点的消息,而不仅仅是来自客户端连接的节点。
    【解决方案2】:

    您可以使用“队列转发”功能。 来自 wls 10.3 的在线文档:

    “队列成员可以通过在管理控制台中配置转发延迟属性将消息转发给其他队列成员,该属性默认禁用。该属性定义了分布式队列成员发送消息的时间量,以秒为单位,但没有消费者的,在将其消息转发给其他有消费者的队列成员之前会等待。”

    这里有一个链接:http://docs.oracle.com/cd/E13222_01/wls/docs103/jms/dds.html#wp1260816

    您可以从每个队列的管理中配置此功能。

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 2013-05-07
      • 1970-01-01
      • 2014-12-24
      • 2012-01-09
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多