使用@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 本身外部调用。
是否可以使用注释将任何方法的 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 本身外部调用。