1

我正在使用reactphp/zmq

我怎样才能在多个拉动工人中拥有多个推动工人,这可能吗?

A only 可以有多拉和单推,如 README 的示例:

$push->connect()
$pull->bind()

或单拉多推:

$push->bind()
$pull->connect()

当我尝试将两者都设置为connect pulls 时不会收到消息

否则,尝试使用它启动多个进程bind会抛出:

ZMQSocketException: Failed to bind the ZMQ: Address in use

我应该有一个中间件吗?

(5555)                      (5556)
push -|  (5555) > (5556)   |- pull
push -|-> pull  &  push <- |- pull
push -|   bind  /  bind    |- pull
connect                    connect
4

2 回答 2

0
(5555)                      (5556)
push -|  (5555) > (5556)   |- pull
push -|-> pull  &  push <- |- pull
push -|   bind  /  bind    |- pull
connect                    connect

这与 ZMQPoll 的想法非常相似。不好,你不需要使用 reactphp/zmq

您可以使用 ZMQPoll 运行进程。这个进程可以绑定在5555和5556上。其他进程可以推送和拉取消息。

我的例子它是如何工作的

ZMQ官方网站上的更多示例

来自官方网站的 PHP 示例轮询器

UPD:如果您想要其他解决方案,请查看 ZMQProxy

于 2017-04-14T08:56:22.713 回答
0

啊哈!非常感谢@Mjh澄清事情。

事实证明,我确实需要中间的东西,它应该是一个消息队列代理,而 ZMQ 确实有一些东西。内部调用zmq_proxy启动了一个rrbroker循环,不幸的是这些人在 reactphp/zmq 中没有抽象出来,但他们在 ext-php 到ZMQDevice.

来源:http: //zguide.zeromq.org/php :chapter2#ZeroMQ-s-Built-In-Proxy-Function

于 2017-04-14T15:47:28.290 回答