>  Q&A  >  본문

java - spring-amqp中消费者同步回复消息有没有更简单的方法?

amqp中使用
provider使用sendAndReceive可以等待消费者取得返回值
consumer使用receiveAndReply,并添加监听器,可以取得provider的message处理并回复

当消息是异步时,直接注册监听器实现onMessage()方法即可。
但是onMessage()方法的返回值是void

那么如果要实现provider同步的功能
consumer除了

while(true){
    amqpTemplate.receiveAndReply(queueName,new Callback(Message message){
         dosomething;
         return "result";
    })
}

这种方式之外 还有别的使用方法吗?

ringa_leeringa_lee2716일 전485

모든 응답(2)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-18 10:28:20

    왜 반환값을 기다려야 하나요?
    A -> B
    A <- B
    A가 B에게 메시지를 보내고, B는 처리가 완료된 후 메시지를 받습니다. B는 A가 메시지 처리 결과를 수신하면 A에게 메시지(수신)를 보냅니다. AB는 ProducerConsumer 둘 다입니다.

    MQ가 여전히 동기화 및 기타 작업을 수행해야 한다면 MQ를 직접 사용하고 인터페이스를 사용하는 것이 더 쉽지 않을까요?

    회신하다
    0
  • 阿神

    阿神2017-04-18 10:28:20

    그럼 공급자가 소비자로부터 반환 값을 받을 때까지 차단하도록 하시겠습니까?
    동기적으로 수신해야 하는 경우에는 공급자와 소비자를 모두 단일 스레드로 만들 수 있습니다.

    회신하다
    0
  • 취소회신하다