2017-09-20 135 views
0

我想将Spring云流添加到使用Spring AMQP和RabbitMQ的现有项目。春季AMQP春季云流迁移 - 现有队列

我有以下兔配置:

监制交换名称: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的现有队列。

有什么办法可以达到这个目的吗?

回答

1

目前尚不支持;虽然许多属性是可配置的(路由键等),但队列名称始终为<destination>.<group>

如果要从现有应用程序中使用,请考虑使用@RabbitListner而不是@StreamListener

随意打开GitHub Issue参考这篇文章 - 许多其他“斟酌”的配置设置(如路由键)是可配置的,但不是队列名称本身。也许我们可以添加一个布尔值includeDestInQueueName。在这个问题中引用这个问题。

+0

好:)感谢您的快速响应! – fightlight

+0

我们也面临同样的问题。我们有现有的rabbitmq集群,并希望为现有集群(扇出)创建一个客户端客户端。您是否建议不要将Spring云流用于现有rabbitmq集群?我们计划在下一年使用云流创建通用客户端,因此我们必须迁移到Kinesis。 – user2589228

+0

要为队列的完整自定义命名添加支持并不困难;这只是今天不存在;正如我向OP提议的那样,打开一个GitHub问题来请求增强是第一步。当功能可用时,您可以从一个'@ RabbitListener'开始并将其切换到'@StreamListener'。他打开[这个问题](https://github.com/spring-cloud/spring-cloud-stream-binder-rabbit/issues/93)。添加您的声音以提高优先级。 –