使用@SentTo 通过 Spring Boot 和 RabbitMq 发送消息

Use @SentTo to send a message with Spring Boot and RabbitMq

是否可以使用注释将任何方法的 return 值发送到队列,例如

@SentTo("my.queue.name")
String send() {
    return myString;
}

我一定需要@RabbitListener 才能使用@SendTo 吗?或许还有别的出路?

我正在努力简化我的代码。

@SendTo 目前仅适用于发件人未设置 replyTo header.

@RabbitListener 的回复

您可以使用 Spring Integration @Publisher annotation 将其通道连接到 rabbitmq 出站通道适配器来做您想做的事情...

@Publisher(channel = "amqpOutboundChannel")
public String send() {
    return myString;
}

@Bean
@ServiceActivator(inputChannel = "amqpOutboundChannel")
public AmqpOutboundEndpoint amqpOutbound(AmqpTemplate amqpTemplate) {
    AmqpOutboundEndpoint outbound = new AmqpOutboundEndpoint(amqpTemplate);
    outbound.setRoutingKey("my.queue.name"); // default exchange - route to queue 'my.queue.name'
    return outbound;
}

该方法必须 public 并从 bean 本身外部调用。