ZeroMQ XPub-XSub с PHP: сообщения никогда не приходят на прокси

Я пытаюсь реализовать публикацию подписки с использованием прокси с ZeroMQ и PHP как это описано в руководстве на рисунке 13. Установка такая же, как описано здесь: как реализовать сеть Pub-Sub с прокси с помощью XPUB и XSUB в ZeroMQ (jzmq) 3.xx

subscriber.php

<?php
$context = new ZMQContext();
$sub = new ZMQSocket($context, ZMQ::SOCKET_SUB);
$sub->connect("tcp://127.0.0.1:5000");
$sub->setSockOpt(ZMQ::SOCKOPT_SUBSCRIBE, 'Hello');
$msg = $sub->recv();
echo "got $msg";

publisher.php

<?php

$context = new ZMQContext();
$pub = new ZMQSocket($context, ZMQ::SOCKET_PUB);
$pub->connect("tcp://127.0.0.1:6000");

while (1) {
echo "publishing";
$pub->send("Hello World");
sleep(1);
}

proxy.php

<?php
$context = new ZMQContext();
$frontend = new ZMQSocket($context, ZMQ::SOCKET_XSUB);
$frontend->bind("tcp://127.0.0.1:6000");
$backend = new ZMQSocket($context, ZMQ::SOCKET_XPUB);
$backend->bind("tcp://127.0.0.1:5000");
$device = new ZMQDevice($frontend, $backend);
$device->run();

Если я запустил все три сценария PHP (сначала прокси, затем издатель, затем подписчик), то никакие сообщения не будут получены этому подписчику.

Чтобы увидеть, приходят ли какие-либо сообщения на прокси-сервер, я попытался получить сообщения вручную на прокси-сервере:

while (true) {
if ($frontend->recv(ZMQ::MODE_DONTWAIT)) {
echo "received message from xpub";
}
if ($frontend->recv(ZMQ::MODE_DONTWAIT)) {
echo "received message from xsub";
}
}

Есть несколько вопросов, связанных с переполнением стека:

Что мне не хватает?

1

Решение

mail_artem3_ru: [email protected] также должен иметь установленный фильтр тем:

$frontend->send( chr(1) + "" ); /* XSUBSCRIBE to { ANY == "" } topic incoming */

(Для ZeroMQ API-Ref .: >>> Документация API ZeroMQ )

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]