DOC から
ØMQ は「スワップ」と呼ばれるものを提供します。これは、キューに保存できないメッセージを保持するディスク ファイルです。
HWM に到達した場合にスワップにオーバーフローしたメッセージは、受信者が [ID を使用して] 戻ってくるか、正常に動作し始めると、受信者に送信されますか?
DOC から
ØMQ は「スワップ」と呼ばれるものを提供します。これは、キューに保存できないメッセージを保持するディスク ファイルです。
HWM に到達した場合にスワップにオーバーフローしたメッセージは、受信者が [ID を使用して] 戻ってくるか、正常に動作し始めると、受信者に送信されますか?
DOCから
ZMQ_SWAP オプションは、指定されたソケットのディスク オフロード (スワップ) サイズを設定します。ZMQ_SWAP がゼロ以外の値に設定されているソケットは、その最高水準点を超える可能性があります。この場合、未処理のメッセージはメモリに保持されるのではなく、ディスク上のストレージにオフロードされます。
したがって、メッセージは受信者に送信されます。でテストしました
プッシュソケット
$sender = new ZMQSocket($context, ZMQ::SOCKET_PUSH);
$sender->setSockOpt(ZMQ::SOCKOPT_HWM, 1);
$sender->setSockOpt(ZMQ::SOCKOPT_SWAP, 1000);
$sender->connect("tcp://127.0.0.1:9090");
for ($i = 0; $i < 1000; $i++) {
$sender->send($i);
echo "message sent";
usleep(100);
}
と
プルソケット
<?php
$context = new ZMQContext();
$receiver = new ZMQSocket($context, ZMQ::SOCKET_PULL);
$receiver->setSockOpt(ZMQ::SOCKOPT_HWM, 25000);
$receiver->setSockOpt(ZMQ::SOCKOPT_SWAP, 25000);
$receiver->bind("tcp://127.0.0.1:9090");
$i = 0;
while (1) {
$msg = $receiver->recv();
echo "$i $msg \n";
$i++;
}
PULLer なしで最初に PUSH ソケットを開始することによって