spring rabbit listen输出队列或接收

时间:2015-04-22 10:10:32

标签: java spring rabbitmq

我正在开发一个支持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);

}

在高负载下哪种方式可以更快速,更稳定地工作?并且可能有另一种更有效的方法来做到这一点。谢谢

1 个答案:

答案 0 :(得分:3)

第二种方式与第一种方式一样,你必须实现第二种方式:

  • 创建相关ID
  • 维护地图
  • 从回复队列中出列消息
  • 将回复消息与制作人
  • 相关联
  • ...

顺便说一句,最有效的方法是没有等待回复的帖子。因此以异步方式工作:发送消息的线程可能不是接收回复的线程。 Have a look at the documentation