我正在运行一个带有 2 个应用程序的集群(节点 1 和节点 2)。应用 A 和应用 B。
- 应用程序 A 将向 JMS 队列 Q 发送消息(这将分布在节点 1 和 2 上)。
- App B 将从队列中侦听,处理并将消息发送回 Q(这也将被分发)。
所以我希望 App B 将消息发送到它接收的同一节点。我们如何实现这一点?
代码/配置。如何 ?
提前致谢。
我正在运行一个带有 2 个应用程序的集群(节点 1 和节点 2)。应用 A 和应用 B。
所以我希望 App B 将消息发送到它接收的同一节点。我们如何实现这一点?
代码/配置。如何 ?
提前致谢。
您可以根据要将消息传递到哪个节点来设置消息的 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();
}
}