spring 兔子监听输出队列或接收

spring rabbit listen output queue or receive

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