2013-07-23 51 views

回答

56

不同的是,一個PUB插座發送相同的消息給所有訂戶,而PUSH做了循環在所有其連接PULL套接字。

在你的例子中,如果你只從根發送一條消息,那麼所有訂閱者都會收到它(禁止慢速訂閱者等),但只有一個工作者。

根據主題,發佈/子模式用於廣泛的消息分發。推/拉模式實際上是一種流水線機制。您的推/拉示例似乎試圖進行負載平衡,這很好,但req/rep可能更適合由於其他問題。

它看起來像「問題」在這裏0MQ的相同部分進行說明引導您從得到的圖像:push/pull ventilator example

+4

我也想知道丟失的消息...即來講有什麼區別會發生如果服務器PUB或PUSH消息和客戶端[1]丟失連接並重新連接[2]客戶端始終連接,但客戶端忙於工作,並沒有在.recv() – Bhuvan

+1

'SUB'和'PULL'插座具有共同的特性,即使當客戶端代碼沒有執行「recv」時,它們也會從可用消息中進行消費,因此在您的示例中,無論是哪種情況,client [2]都會獲得消息,並且client [1]新消息重新連接時。重要的是,兩種套接字類型都不能被「尋址」到特定的客戶端。 – SteveLove

+1

你在哪裏得到這個信息....點擊並試用zeroMQ或者你找到了一些很酷的資源? – Bhuvan