我正在开发一个支持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);
}
在高负载下哪种方式可以更快速,更稳定地工作?并且可能有另一种更有效的方法来做到这一点。谢谢
答案 0 :(得分:3)
第二种方式与第一种方式一样,你必须实现第二种方式:
顺便说一句,最有效的方法是没有等待回复的帖子。因此以异步方式工作:发送消息的线程可能不是接收回复的线程。 Have a look at the documentation