2017-09-20 11 views
0

私は、RabbitMQでSpring AMQPを使用する既存のプロジェクトにSpring Cloud Streamを追加しようとしています。Spring AMQPからSpring Cloud Streamへの移行 - 既存のキュー

I以下のウサギの構成を有している:

プロデューサー交換名:producer.mail-sent.exchange

消費者キュー名:生産者側ではconsumer.mail-sent.queue

私はこのように設定します。 spring: cloud: stream: bindings: output: contentType: application/json destination: producer.mail-sent.exchange

と使用次のコード:

消費者側では

私は、次の設定があります。次のコードで 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>です。

既存のアプリケーションから消費する場合は、@StreamListenerの代わりに@RabbitListnerを使用することを検討してください。

GitHub Issueこのポストを参照して自由に開くことができます - 他の多くの "懐疑的な"構成設定(ルーティングキーなど)は設定可能ですが、キュー名自体は設定できません。おそらく、ブール値includeDestInQueueNameを追加することができます。問題のこの質問を参照してください。

+0

Ok :)すばやい応答ありがとう! – fightlight

+0

私たちは同じ問題に直面しています。私たちは既存のrabbitmqクラスタを持ち、既存のクラスタ(ファンアウト)用のコンシューマクライアントを作成したいと考えています。あなたは既存のrabbitmqクラスタにSpringクラウドストリームを使用しないことを提案していますか?私たちは来年にKinesisに移行しなければならないため、クラウドストリームを使用して汎用クライアントを作成する予定です。 – user2589228

+0

キューの完全なカスタムネーミングのサポートを追加することは難しくありません。今日はそこにいません。私がOPに提案したように、拡張を要求するGitHubの問題を開くことが第一歩です。 @ RabbitListenerで始まり、その機能が利用可能になったら '@ StreamListener'に切り替えることができます。彼は[この問題](https://github.com/spring-cloud/spring-cloud-stream-binder-rabbit/issues/93)を開いた。音声を追加して優先度を上げてください。 –

関連する問題