ZMQ PUB ソケットを使用して、さまざまなトピックに関するニュースを配信しています。しかし、これらのメッセージの一部は計算にコストがかかります。実際に必要なものだけを計算できるように、on_subscribe コールバックを使用する方法はありますか?
4 に答える
私が見つけた解決策を文書化するためだけに
XPUB ソケットを作成し、そのソケットで受信メッセージをリッスンできます。サブスクリプションは、b'\x01' で始まり、その後にトピックが続くメッセージを生成します。クライアントがサブスクライブを解除すると、メッセージは b'\x00' の後にトピックが続きます。
XPUB および XSUB ソケットの動作については、zmq_socket のマニュアル ページに記載されています。
ガイドには、このように XPUB を使用して最後の値のキャッシュを行う例もあります。
on_subscribeコールバックを作成する方法は、パブリッシャーと接続しているサブスクライバーの間に別のreq/rep接続を設定することです。サブスクライバーは、発行するために準備する必要があるメッセージを通知するために、発行者に必要なメッセージを送信します。このようにして、関心のあるメッセージのみがPUB/SUB接続を介して公開されます。これは、すべてのメッセージをブラストするのではなく、必要なメッセージを「登録」するための一種です。
zmq 2.x では、サブスクリプションはパブリッシャーに送信されません。zmq 3.x にはサブスクリプション フォワーディングがありますが、パブリッシャー サイトにはそのようなコールバックはありません。