2017-09-20 133 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)。添加您的聲音以提高優先級。 –