私はPULLを介して受信しているワーカーにメッセージを送信するためにPUSHソケットを使用しています。そのため、メッセージはワーカー間で均等に分散されます。しかし、特定のメッセージを処理するために一部のワーカーを使用したいと思います。 PUSH/PULLメソッドでは、各作業者に特別な処理はありません。すべて同じです。私はフィルタを使っているのでPUB/SUBを使っていますが、自動的に作業者に配布する方法はありません。一連のワーカーがメッセージAを処理することを意図している場合、すべてのワーカーはそれを受け取ります。それは良いことではありません。ZeroMQ PUSH SocketをPULLすることはできますが、PUB/SUBのようなフィルタを使用できますか?
完璧な方法は、Aワーカーが意図したメッセージだけをPULLすることができ、B PULLメッセージをBに向けることです。たとえば、セットAのポートと、セットBは、しかし、それは非常に1つのソケットのためのこのソリューションを持っているエレガントだろう、私はまた、それは開発者によって行うことができなかった理由はない参照してください。
既存のバージョンのZeroMQでこれを行う方法はありますか?
基本的な考え方は、(PUBと同じように)エンベロープされたメッセージを送信するPULLは1つだけであり、ワーカーはこのエンベロープでメッセージをPULLすることができます。ワーカーがすべてのメッセージをプルしてそのメッセージが意図されているかどうかを確認することができますが、受信メッセージの処理と再ブロードキャストが必要になるため、廃棄されません。