可以在一个连接中同时包含生成方和使用方(在使用统一 API 时甚至可包含会话)。此外,JMS API 允许使用临时目的地来实现消息传送操作的请求-回复模式。
要设置请求-回复模式,需要执行以下操作:
创建使用方可发送回复的临时目的地。
在要发送的消息中,将消息头的 JMSReplyTo 字段设置为该临时目的地。
消息使用方处理消息时,将检查消息的 JMSReplyTo 字段以决定是否需要回复,并将该回复发送到指定目的地。
请求-回复机制为生成方免去了设置回复目的地的受管理对象的麻烦,同时让使用方可以轻松地响应请求。当生成方只有在确保请求已处理后才能继续时,此模式非常有用。
图 2–6 说明了请求-回复模式,即向主题中发送消息并接收临时队列中的回复。
如图所示,MyTopicPublisher 生成 Msg1 并将它发送到目的地 MyTopic。MyTopicSubsriber1 和 MyTopicSubscriber2 接收该消息并向 MyTempQueue 发送回复,MyTQReceiver 从 MyTempQueue 中检索该回复。该模式可能适用于向大量客户端发布定价信息,并将客户端的回复订单排队以便按顺序进行处理的应用程序。
临时目的地的存在时间只能与创建它们的连接的存在时间一样长。任何生成方都可以向临时目的地发送消息,但只有创建目的地的连接所创建的那些使用方能够访问临时目的地。
由于请求/回复取决于临时目的地的创建,因此在下列情况中不应使用此模式:
如果预计创建临时目的地的连接可能在回复发送前终止。
如果您需要向临时目的地发送持久性消息。