ZeroMQ + ReactPHP:多个生产者(推)和多个消费者(拉)
ZeroMQ + ReactPHP: Multiple producers (push) and multiple consumers (pull)
我正在使用 reactphp/zmq。
我怎样才能在多个拉式工作器中有多个推式工作器,这可能吗?
A only 可以有 multi pull 和 single push,如 README 的例子:
$push->connect()
$pull->bind()
或者单拉多推:
$push->bind()
$pull->connect()
当我尝试将两者都设置为 connect
时,拉动没有收到消息。
否则,尝试使用 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
(5555) (5556)
push -| (5555) > (5556) |- pull
push -|-> pull & push <- |- pull
push -| bind / bind |- pull
connect connect
这和ZMQPoll的思路很像。不好你不需要使用 reactphp/zmq
您可以运行 使用 ZMQPoll 进行处理。本进程可以绑定在5555和5556上,其他进程可以推送和拉取消息。
more examples on official ZMQ site
PHP example poller from official site
UPD: 如果您需要其他解决方案,look at ZMQProxy
啊哈!非常感谢 @Mjh 澄清事情。
原来我确实需要中间的东西,它应该是一个消息队列代理,而 ZMQ 确实有一些东西。内部调用 zmq_proxy
开始一个 rrbroker
循环,不幸的是,这些家伙并没有在 reactphp/zmq 处被抽象化,但它们在 ext-php 到 ZMQDevice
.
来源:http://zguide.zeromq.org/php:chapter2#ZeroMQ-s-Built-In-Proxy-Function
我正在使用 reactphp/zmq。
我怎样才能在多个拉式工作器中有多个推式工作器,这可能吗?
A only 可以有 multi pull 和 single push,如 README 的例子:
$push->connect()
$pull->bind()
或者单拉多推:
$push->bind()
$pull->connect()
当我尝试将两者都设置为 connect
时,拉动没有收到消息。
否则,尝试使用 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
(5555) (5556)
push -| (5555) > (5556) |- pull
push -|-> pull & push <- |- pull
push -| bind / bind |- pull
connect connect
这和ZMQPoll的思路很像。不好你不需要使用 reactphp/zmq
您可以运行 使用 ZMQPoll 进行处理。本进程可以绑定在5555和5556上,其他进程可以推送和拉取消息。
more examples on official ZMQ site
PHP example poller from official site
UPD: 如果您需要其他解决方案,look at ZMQProxy
啊哈!非常感谢 @Mjh 澄清事情。
原来我确实需要中间的东西,它应该是一个消息队列代理,而 ZMQ 确实有一些东西。内部调用 zmq_proxy
开始一个 rrbroker
循环,不幸的是,这些家伙并没有在 reactphp/zmq 处被抽象化,但它们在 ext-php 到 ZMQDevice
.
来源:http://zguide.zeromq.org/php:chapter2#ZeroMQ-s-Built-In-Proxy-Function