使用@SentTo发送带有Spring Boot和RabbitMq的消息

时间:2017-04-18 19:49:46

标签: java spring spring-boot rabbitmq spring-rabbit

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

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

我肯定需要@RabbitListener才能使用@SendTo吗?也许另一种出路?

我试图简化我的代码。

1 个答案:

答案 0 :(得分:1)

@SendTo目前仅用于@RabbitListener的回复,其中发件人未设置replyTo标题。

你可以用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;
}

该方法必须是公共的,并从bean本身外部调用。