我使用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