我使用reactphp/zmq。ZeroMQ + ReactPHP:多个生产者(推)和多个消费者(拉)
如何在多个拉动员工中拥有多个推动员工,这可能吗?
一个只能有多重拉动和单推,如自述的例子:
$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
你在用那个建议的架构解决什么问题?为什么你需要有多个按钮?你不能有多个推进器,然后有随机数量的工人拉。您需要有一个单一的端点,其中所有工作人员PUSH和一个终端,其中所有工作人员都从中取出。幸运的是,ZeroMQ支持'TIPC'协议,这使得这个过程变得简单,但是你可以更明智地解释一下你正在尝试做什么,这样我们就可以建议最佳的体系结构。 – Mjh
我正在构建一个电子邮件验证工具,当添加一个新列表时,它会启动一个新推送器,将其电子邮件添加到队列中,同时多个提取器将监听该队列以验证它们。 –
你有粉丝(推动者,**给**的任务),你有工作者,**执行任务的人。你**没有队列**。 ZeroMQ是传输层,不是队列(尽管内部使用队列)。你需要的是一个中间的服务,作为一个队列 - 它接收和发送任务。你的推动者推动排队,你的推拉从队列中拉出。该服务将使用“拉”来接收任务,并使用“推”将其交给工人。你使用'push'来给它任务,'pull'从中获取任务。 – Mjh