2

ZMQ を使用する Python メッセージング アプリケーションがあります。各オブジェクトには PUB キューと SUB キューがあり、相互に接続されています。特定のケースでは、SUB キュー内の特定のメッセージを待機し、興味のないメッセージは後で処理するために残します。

現在、私はすべてのメッセージを取得し、Python Queue に興味のないメッセージを待ち行列に入れています。待っているメッセージが見つかるまで待ちます。しかし、彼は、各処理ルーティングで、最初に Python Queue で古いメッセージをチェックする必要があることを意味します。より良い方法はありますか?

4

1 に答える 1

1

zmq パブリッシャーはキューイングを行いません...メッセージを受信できる SUB がない場合、メッセージをドロップします。

あなたの状況でのより良い方法は、関心のある特定のメッセージのみを購読する汎用サブスクライブを作成することです。そうすれば、すべての異なる SUB を (1 つのスレッド内で zmq ポーラーを使用する場合でも) スピンアップでき、それらはすべて、PUB からのメッセージを処理します....

これは、PUB/SUB パターンが主に使用されるものです。サブスクライブは対象のメッセージのみをサブスクライブするため、ループごとにメッセージのキューを循環して対象のメッセージを探す必要がなくなります。

于 2012-11-02T17:58:38.273 に答える