1

我有一個關於RabbitMQ的spring-messaging(spring integration + amqp)的問題。我有一個基於微服務架構的應用程序。 一個服務於以下方式發佈消息:春季消息AMQP需要從消息傳遞所需的組回覆

@EventListener(AfterCreationEvent.class) 
@Publisher(channel = "messages") 
public Message<Message> onCreateEntity(AfterCreationEvent<Message> event) { 
    if (isDisabled()) return null; 
    String id = event.getSource().getId(); 
    return MessageBuilder.withPayload(event.getSource()) 
      .build(); 
} 

等消息被監聽,例如

@StreamListener("messages") 
public void onMessageReceived(@Payload Message input) { 
    messageService.save(input) 
} 

微服務具有以下基本配置:

spring: 
    rabbitmq: 
    host: rabbit 
    port: 5672 
    cloud: 
    stream: 
     bindings: 
     messages: 
      producer: 
      required-groups: terminal,chat,security 
      destination: message.share 
      binder: rabbit 
     binders: 
     rabbit: 
      type: rabbit 

和每個服務都有自己的配置,例如:

spring: 
    application.name: message 
    cloud: 
    stream: 
     bindings: 
     messages: 
      content-type: application/json 

spring: 
    application.name: terminal 
    cloud: 
    stream: 
     bindings: 
     messages: 
      group: terminal 

,它工作正常。但它以異步方式工作,但我希望收到消息傳遞的每個必需組的回覆。可能嗎?

現在我用彈簧集成 - AMQP工作:4.3.1.RELEASE

回答

1

消息AMQP是由它的本質上是異步所以默認情況下,你不能等待回覆。你需要自己實現等待機制。一種方法是利用消息的相關ID。

+0

事情是,org.springframework.messaging.core.GenericMessagingTemplate方法doSendAndReceive,但我不知道如何配置發佈者的消息和使用doSendAndReceive方法 – b3lowster