JMS ReplyTo - 它是如何工作的?

Syn*_*sso 14 jms java-ee

JMS API允许消息声明replyTo Destination实例.(即的超类Queue,Topic).然后,服务可以使用此队列向发送方发送回复消息.

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

Ara*_*ram 13

场景1

在这种情况下,它Destination是预配置的,因此证明可行.将此目标设置为JMSReplyTo标头值没有太大价值,因为接收方可能已经知道此预配置目标的存在.

情景2

在这种情况下,发送方创建一个临时目的地,接收方只能通过调用getJMSReplyTo()接收方法来了解这一点Message.这种建立发送方和接收方之间的私有信道.阅读这篇关于临时目的地的利弊的好文章.

示例代码

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