ZeroMQで奇妙な問題が発生しています。この問題では、一部のメッセージがスタックし、新しいメッセージが到着するとスタックが解除されます。それは、新しいメッセージがスタックしたメッセージをドアに押し付けるようなものです(ひどい比較です、私は知っています)。
私のコードは非常に単純です:
rep.php
$context = new ZMQContext;
$receiver = new ZMQSocket($context, ZMQ::SOCKET_PULL);
$receiver->connect("tcp://localhost:8022");
$receiver2 = new ZMQSocket($context, ZMQ::SOCKET_PULL);
$receiver2->connect("tcp://localhost:8024");
for (;;) {
echo $receiver->recv() . PHP_EOL;
echo $receiver2->recv() . PHP_EOL;
}
cnt.phpとcnt2.php(同じコード、異なるポート)
$context = new ZMQContext;
$work = new ZMQSocket($context, ZMQ::SOCKET_PUSH);
$work->bind('tcp://*:8022');
$work->send('Hello World');
cnt.phpは8022に送信し、cnt2.phpは8024に送信します。これらは時々実行され、メッセージをrep.phpに送信します。ただし、一部のメッセージがスタックします。cnt.phpから4つのメッセージを送信した場合、何も受信されませんが、cnt2.phpから1つを送信すると、一度に5つのメッセージが表示されます。何か案は?