PUSH/PULL
0MQ
(Python-> C#)のパターンはPUSH
ソケットと1つだけPULL
ソケットです。両方が接続されている限り、作業者がメッセージを処理するのに時間がかかっても、キューに入れられたメッセージの順序は保持されます。0MQ PUSH/PULL PULLソケットが接続されていない場合は壊れています。
ワーカーがしばらく接続を解除してから再接続すると、PUSH
ソケットでキューに登録されていても、この期間にキューに入れられたすべてのメッセージがランダムな順序で到着します。この問題に対する組み込みのソリューションはありますか、より高度なパターンを使用すべきですか?
私はPULL側のコードを追加します。
using (var receiver = new PullSocket())
{
receiver.Bind("tcp://localhost:5557");
while (true)
{
var payload = receiver.ReceiveFrameString();
log.Debug($"Payload: {payload}");
}
}
それは実際にかなり奇妙です。 zeromqは注文を保証するものではありませんが、ご注文には近いはずです。どの輸送機を使用していますか? – somdoron
私はtcpを使用し、より多くのテストの後、私が受け取る注文は完全にランダムであるようです – marsop