メッセージを受信するたびに、コンシューマーにいくつかのアクションを実行してもらいたい。コンシューマーはキューを24時間年中無休で「リッスン」して実行する必要がありますか、それとも適切なメッセージを受信した場合にのみ実行できますか?
1 に答える
あなたの質問が理にかなっているのかわかりません。メッセージは、キューのコンシューマーのみがキューから受信できます。メッセージがキューにあるかどうかを知るには、キューを調べる必要があります。それを行う唯一の方法は、消費者になることです。
本当に必要な場合は、管理プラグインのコマンドラインインターフェイスを実行するスクリプトを作成できます。これにより、キューがポーリングされ、サイズが複数の場合、コンシューマーを実行してキューから消費するプログラムを開始できます。
これはどれも意味がありません。キューを待っているだけで他に何もしていない場合は、リソースをほとんど消費していないため、24時間年中無休でコンシューマーを実行している場合の問題はわかりません。
もちろん、消費者は24時間年中無休で実行する必要はありません。これはMQのポイントの一部です。非同期です。プロデューサーがキューに書き込むときに、コンシューマーが実行されている必要はありません。したがって、キューからのメッセージをチェックして処理するためにコンシューマーを定期的に実行するスケジュールされたタスクを持つことができます。しかし、私はそれがあなたが望むものだとは思いません。
聞くことの全体的なポイントは、メッセージが来るまで何もしない、メッセージを処理する、次のメッセージまで何もしないということです。これはあなたがあなたの質問の最初の文が欲しいものです。なぜリスニングに問題があるのですか?