0

我正在运行一个带有 2 个应用程序的集群(节点 1 和节点 2)。应用 A 和应用 B。

  1. 应用程序 A 将向 JMS 队列 Q 发送消息(这将分布在节点 1 和 2 上)。
  2. App B 将从队列中侦听,处理并将消息发送回 Q(这也将被分发)。

所以我希望 App B 将消息发送到它接收的同一节点。我们如何实现这一点?

代码/配置。如何 ?

提前致谢。

4

1 回答 1

1

您可以根据要将消息传递到哪个节点来设置消息的 String 属性。

        TextMessage textmsg1 = qs.createTextMessage();
        textmsg1.setStringProperty("SentToNode","Node1");

(如果它将每条消息都传递给两个节点,那么您可以简单地让 appB 向两个节点发送消息,这是没有意义的,所以忽略这种情况)。

现在,在侦听此队列的接收端(您的应用程序 B)上,您可以检索此属性并采取适当的操作。

@Override
public void onMessage(Message message) {
    try {
        count++;
        TextMessage msg = (TextMessage) message;
        System.out.println("Message Received " + msg.getText());
        System.out.println("Message received from " + msg.getStringProperty("SentToNode"));
        //now you can send the message to that node

    } catch (JMSException e) {
        e.printStackTrace();
    }
}
于 2013-10-01T09:12:23.917 回答