当我将回复消息发送到我作为消费者连接的同一队列时,我的消费者立即尝试再次使用此消息。但如何将其作为回复发送而不进一步消费?
onMessage(...){
byte[] arr = SerializationUtils.serialize(res);
//compute result message
Message resMessage = new Message(arr, composeMessageProperties(null));
message.getMessageProperties().setReplyTo("thesamequeue");
//handle result
handleResult(resMessage, message, channel);
}
答案 0 :(得分:3)
的Avalon,
JMS请求/回复模式使用2个队列。
第一个队列(请求队列)用于在进程中接收请求。第二个队列(Reply队列)用于发送响应。然后,另一个侦听器(在您的上下文内部或外部)可以从您的回复队列中读取响应并相应地执行逻辑。
使用2个队列有助于分离关注点。在您的上下文中,第一个队列侦听器需要处理请求并将响应放入您的回复队列中。那个响应将由其他一些过程/系统处理......