来自文档
ØMQ 提供了一种叫做“swap”的东西,它是一个磁盘文件,保存着我们无法存储到队列中的消息
在 HWM 达到的情况下溢出到交换的消息是否会在接收器返回 [with the identity] 或开始表现良好时发送到接收器?
来自文档
ØMQ 提供了一种叫做“swap”的东西,它是一个磁盘文件,保存着我们无法存储到队列中的消息
在 HWM 达到的情况下溢出到交换的消息是否会在接收器返回 [with the identity] 或开始表现良好时发送到接收器?
来自文档
ZMQ_SWAP 选项应设置指定套接字的磁盘卸载(交换)大小。将 ZMQ_SWAP 设置为非零值的套接字可能会超过其高水位线;在这种情况下,未完成的消息应卸载到磁盘上的存储而不是保存在内存中
因此,消息将发送给接收方。我用它测试过
PUSH 插座
$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++;
}
通过先启动 PUSH 套接字而不使用 PULLer