JMS API允许消息声明一个ReplyTo Destination实例。 (即QueueTopic的超类)。然后,服务可以使用此队列将回复消息发送给发件人。

可以将哪些Destination设置为ReplyTo值有任何限制吗?这似乎不太可能起作用,因为该服务甚至可能没有到定义的Destination的任何网络路由,因此无法返回任何消息。 JMS是否以某种方式断言所提供的Destination的有效性(可到达性)?还是仅由服务来尝试对给定的Destination进行响应并在必要时失败。

最佳答案

场景1

在这种情况下,Destination已预先配置,因此证明可以正常工作。将目标设置为JMSReplyTo标头的值没有太大价值,因为接收方可能已经知道此预配置目标的存在。

方案2

在这种情况下,发送方将创建一个临时目标,接收方将仅通过在接收到的getJMSReplyTo()上调用Message方法知道这一点。这种在发送者和接收者之间建立专用通道。 Read this nice article关于临时目的地的优缺点。

样例代码

Queue tempQueue = qSession.createTemporaryQueue();
TextMessage request = qSession.createTextMessage();
request.setJMSReplyTo(tempQueue);
QueueReceiver qReceiver = qSession.createReceiver(tmpQueue);
Message response = qReceiver.receive();

关于jakarta-ee - JMS ReplyTo-如何运作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8846330/

10-11 05:18