Spring AMQP 到 Spring Cloud Stream 迁移 - 现有队列
Spring AMQP to Spring Cloud Stream migration - existing queue
我正在尝试将 Spring Cloud Stream 添加到使用 Spring AMQP 和 RabbitMQ 的现有项目中。
我有以下兔子配置:
生产者交易所名称:producer.mail-sent.exchange
消费者队列名称:consumer.mail-sent.queue
在生产者方面,我这样配置:
spring:
cloud:
stream:
bindings:
output:
contentType: application/json
destination: producer.mail-sent.exchange
并使用以下代码:
@Autowired
private Source source;
...
source.output().send(MessageBuilder.withPayload(someStuff).build());
...
在消费者方面,我有以下配置:
spring:
cloud:
stream:
bindings:
input:
contentType: application/json
destination: producer.mail-sent.exchange
group: consumer.mail-sent.queue
使用以下代码:
@EnableBinding(Sink.class)
...
@StreamListener(Sink.INPUT)
public void handle(String someStuff) {
log.info("some stuff is received: " + someStuff);
}
而且它似乎有效。 :)
但!在兔子方面,我有一个名为 producer.mail-sent.exchange.consumer.mail-sent.queue
的新队列,但我希望它使用名为 consumer.mail-sent.queue
.
的现有队列
有什么办法可以实现吗?
暂不支持;虽然许多属性是可配置的(路由键等),但队列名称始终是 <destination>.<group>
.
如果您想从现有应用程序中使用,请考虑使用 @RabbitListner
而不是 @StreamListener
。
随意打开一个 GitHub Issue 引用此 post - 许多其他 "opinionated" 配置设置(例如路由键)是可配置的,但不是队列名称本身。也许我们可以添加一个布尔值 includeDestInQueueName
。在问题中引用此问题。
我正在尝试将 Spring Cloud Stream 添加到使用 Spring AMQP 和 RabbitMQ 的现有项目中。
我有以下兔子配置:
生产者交易所名称:producer.mail-sent.exchange
消费者队列名称:consumer.mail-sent.queue
在生产者方面,我这样配置:
spring:
cloud:
stream:
bindings:
output:
contentType: application/json
destination: producer.mail-sent.exchange
并使用以下代码:
@Autowired
private Source source;
...
source.output().send(MessageBuilder.withPayload(someStuff).build());
...
在消费者方面,我有以下配置:
spring:
cloud:
stream:
bindings:
input:
contentType: application/json
destination: producer.mail-sent.exchange
group: consumer.mail-sent.queue
使用以下代码:
@EnableBinding(Sink.class)
...
@StreamListener(Sink.INPUT)
public void handle(String someStuff) {
log.info("some stuff is received: " + someStuff);
}
而且它似乎有效。 :)
但!在兔子方面,我有一个名为 producer.mail-sent.exchange.consumer.mail-sent.queue
的新队列,但我希望它使用名为 consumer.mail-sent.queue
.
有什么办法可以实现吗?
暂不支持;虽然许多属性是可配置的(路由键等),但队列名称始终是 <destination>.<group>
.
如果您想从现有应用程序中使用,请考虑使用 @RabbitListner
而不是 @StreamListener
。
随意打开一个 GitHub Issue 引用此 post - 许多其他 "opinionated" 配置设置(例如路由键)是可配置的,但不是队列名称本身。也许我们可以添加一个布尔值 includeDestInQueueName
。在问题中引用此问题。