我正在开发具有Rabbitmq支持的应用程序.因此,我有一个消费者和一个生产者.我需要在两种方法之间做出决定,如何在两者之间建立通信.
第一种方式
public void send(){
//send to consumer and forget
rabbitTemplate.convertAndSend("","routing-key",my object);
//waiting for output queue and messages from consumer
while(true){
//receive something.
if(corellationID==what we need){
//do what we need
break;
}
}
}
第二种方式
public void send(){
//send to consumer and wait for result
Object o=rabbitTemplate.convertSendAndReceive("","routing-key",my object);
}
哪种方法在高负载下会更快速,更稳定地工作?也许还有另一种更有效的方法可以做到这一点.谢谢
解决方法:
与第一种方法一样,第二种方法必须实现第二种方法已经完成的工作:
>创建相关ID
>维护地图
>从答复队列出队消息
>将回复消息与生产者相关联
> …
最有效的方法是没有等待回复的线程.因此以异步方式工作:发送消息的线程可能不是接收答复的线程. Have a look at the documentation
标签:rabbitmq,spring,java
来源: https://codeday.me/bug/20191120/2044004.html