問題タブ [message-ack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Kombu、RabbitMQ: コンシューマー mixin で複数回メッセージを確認する
新しい SO ドキュメンテーション プロジェクトのために Kombu をドキュメント化していたときに、この問題に遭遇しました。
Consumer Mixinの次の Kombu コードを考えてみます。
コードは次のように失敗します。
print_even_characters()
メッセージがとで 2 回 ACK されたためprint_odd_characters()
です。
機能する簡単な解決策は、最後のコールバック関数のみに ACK を送信することですが、他のキューまたは接続で同じ関数を使用したい場合、モジュール性が損なわれます。
複数のコールバック関数に送信されるキューに入れられた Kombu メッセージを ACK する方法は?
c# - RabbitMQ パブリッシャーはトピック交換で確認します - BasicAcks は最初の 1 回だけ起動します
トピック交換を使用して、次の機能を備えたパブリッシュ/サブスクライブ メッセージング パターンが必要です。
- 「発行元確認」を実装してもらいます。
- 処理が完了したら、コンシューマにも各メッセージを確認してもらいます。
- ルーティング キーを使用して、メッセージを 1 つ以上のコンシューマーにルーティングします。
- 永続的なコンシューマー キューを用意して、コンシューマー アプリケーションが一時的にダウンした場合に、回復したときにそのキューからメッセージを取得できるようにします。
そこで、上記をテストするために 2 つのコンソール アプリケーション (送信と受信) を作成しました。
送信
出版社
}
受け取る
問題は、送信プログラムのOnBasicAcksが最初のメッセージに対して 1 回しか呼び出されないことです。