0

私のシステムでは、イベントの送受信にspring-cloud-streamとRabbitMQを使用しています。私はRabbitMQを実行して、サービスAをアップし、サービスBをダウンさせました。 サービスは、サービスBにイベントを送信します。その後、私はサービスBになりました。そして今、私はRabbitがイベントを引き抜くことを期待していますが、何も起こりません。それは正しい行動ですか?私はRabbitMQを初めて使っていますが、すべてのイベントで最終的に受信者が見つかることを保証する必要があります。私のアプリケーションは、特別な設定をしないで、example on githubに基づいて簡単です。何が欠けていますか?サービスの再開後、Rabbitmqはメッセージを受信しません。

+1

私は 'spring-cloud-stream'についてはよく分かりませんが、RabbitMQの観点からは - プロデューサーがこのメッセージをルーティングできるメッセージが'キューはありません 'というメッセージを送信した場合、メッセージは破棄されます。私はRabbitMQとその管理APIについて少しお読みになり、そこにキューがあるかどうか、あなたのメッセージがどうなっているかを確認することをお勧めします。 RabbitMQは、受信者、プロデューサおよびコンシューマが正しく通信することをメッセージが保証しているとは限りません。 –

+1

キューは、コンシューマ・グループを構成しないかぎり、匿名で自動削除されます。新しい消費者は新しいメッセージを得るだけです。私の答えを見てください。 –

答えて

1

コンシューマにgroupがない場合、キューは匿名の自動削除キューです。永続性のためにグループが必要です。 consumer groupsを参照してください。

プロデューサはキューをExchangeにバインドしません。

プロデューサを最初にバインドすると、新しいコンシューマグループの前にメッセージも失われます。

RabbitMQバインダーでは、コンシューマーグループを事前に知っていれば、...producer.requiredGroupsプロパティを設定することができ、キューがバインドされます。

the documentationを参照してください。プロデューサは、それが(RabbitMQので耐久性のキューを予め作成することにより、例えば、)作成された後、彼らが開始場合でも、メッセージの配信を保証する必要のある

requiredGroups

グループのカンマ区切りのリスト。

関連する問題