是否可以使用两个 JMS消息代理实例实现异步请求 - 回复模式?这样服务A就向队列A发送消息,并从队列B(不同的代理实例)获取响应?
JMS API(或Apache Camel)是否提供了一些完整的机制来透明地使用相关标识符来实现这一点?什么是必要的配置?
奖金问题:
为了更加洗牌,我想聚集队列。这可以按照规范透明地实现吗?基本上我有多个Spring引导应用程序(服务),其中嵌入了Spring上下文中的ActiveMQ代理。每个代理都充当服务的单向通道,并且每个服务都会将特定消息的响应排除在其自己的代理中的其他服务之外。现在,我想运行每个服务的多个实例并保留消息之间的相关性。
答案 0 :(得分:0)
由于您的请求发件人(A)和响应接收者(B)是两种不同的服务,因此您有责任在某处存储原始请求的上下文。
最简单的方法是使用专用队列来实现此目的(让我们称之为回声)。
(A)可以存储具有某些特定相关Id的原始请求消息,例如从发送的请求的消息Id中获取。应该为响应消息设置相同的相关Id,这将由(B)采用。因此,一旦响应被(B)接收,它就能够使用具有相同相关Id的选择器从回送队列获得原始请求。