【发布时间】:2012-06-23 22:29:32
【问题描述】:
我在使用 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 条消息。有什么想法吗?
【问题讨论】:
-
变量名的选择是暗示性的,你真的可以不用它
-
那真的没关系。 =/
标签: network-programming message-queue zeromq