2013-05-13 58 views
2

我们的一位客户有一个基于JMS的实现,其中有读/写消息的队列。 JMS客户端需要写入出站队列,并且它将从入站队列中读取响应。 JMS客户端将部署在多个站点上,并将与单个出站队列通信以撰写消息,并将从入站队列(仅限一个)读取响应。考虑有100个唯一的出站请求,然后消费者针对发送的请求获得100个不同的响应的情况(假设消息得到正确传送)。如何确保消费者从入站队列中读取的消息适用于指定的收件人?我们是否必须编写自己的逻辑来映射请求/响应?或者JMS具有基于连接ID等的任何传递机制,以便消息被传递给正确的请求者。非常感谢您,需要您的专家投入正确设计应用程序。我使用的JMS提供程序是Apache ActiveMQ。单个队列的JMS多个使用者

问候, SumeetÇ

回答

2

这听起来像你需要REQUEST/REPLY ...

请求/应答 - 同步
队列发送方发送一个REQUEST消息,然后在同一个线程,接收一个REPLY。发送线程阻塞,直到接收方回复回复消息,确保回复是针对原始请求的。这是一个使用临时队列,REPLY_TO寻址和JMSCorrelationID一个基本设置...

Apache ActiveMQ Request/Reply
EAI Patterns for JMS Request/Reply

点至点 - 异步
如果客户的JMS实现提供了不同的队列发送请求和接收回复,您可以使用唯一的JMSCorrelationID异步发送消息,并且如果客户发回的回复具有相同的ID,则可以在另一个线程中接收到回复消息,并将其与基于t他JMSCorrelationID。从技术上来说,REQUEST/REPLY除了阻塞并使用临时队列将响应消息发送回请求者而不是明确命名的队列之外,其他功能的作用相同。

+0

非常感谢您的回复。我现在可以更好地实施解决方案 – 2013-05-14 09:43:02

+0

不客气!您可以通过点击左边的复选标记来接受这个答案! – raffian 2013-05-14 12:01:46

相关问题