JMS API允许消息声明一个ReplyTo Destination
实例。 (即Queue
,Topic
的超类)。然后,服务可以使用此队列将回复消息发送给发件人。
可以将哪些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/