Настройка свойств reply_to в RabbitListener

#rabbitmq #spring-amqp #spring-rabbit

#rabbitmq #spring-amqp #spring-rabbit

Вопрос:

Я новичок в RabbitMQ. Я использую следующий прослушиватель в моей конфигурации Spring:

 @RabbitListener(queues = "${rabbitmq.queue.a}")
@SendTo("${rabbitmq.queue.b}")
public ResponseMessage receive(RequestMessage request) {
    ResponseMessage response = new ResponseMessage();
    response.setRawPayload(jsonMapper.toJson(request));
    return response;
}
  

И я хотел бы, чтобы при отправке сообщения в rabbitmq.queue.b очередь из этого метода, свойство «reply_to» должно быть установлено на это сообщение.

 @Value("${rabbitmq.queue.b}")
private String responseQueue;

@Bean
Queue responseQueue() {
    return QueueBuilder
            .durable(responseQueue)
            .build();
}
  

Спасибо за любую помощь.

Ответ №1:

Не уверен, что это такое, что «должно быть установлено для этого сообщения»., но reply_to может быть обработано чем-то вроде этого:

 @RabbitListener(queues = "${rabbitmq.queue.a}")
@SendTo("${rabbitmq.queue.b}")
public Message<ResponseMessage> receive(RequestMessage request) {
    ResponseMessage response = new ResponseMessage();
    response.setRawPayload(jsonMapper.toJson(request));
    return org.springframework.messaging.support.MessageBuilder.withPayload(response)
                 .setHeader(AmqpHeaders.REPLY_TO, "YOUR_QUEUE_NAME_FOR_REPLY")  
                 .build();
}