2016-08-13 139 views
-1

望着http://zguide.zeromq.org/page:all#toc76的示意圖:異步客戶端在ZeroMQ

enter image description here

據我瞭解,路由器需要頻繁輪詢從每個客戶的聽到。

然後,路由器將任何客戶端消息轉發給DEALER。

問題1:ROUTER與DEALER的連接是否異步?

問題2:對於服務器的經銷商到N DEALER工人,必須在服務器的經銷商處進行輪詢?

綜觀全書的文字:

客戶端每秒一次發送的請求,並得到零發或多個來回復。

問題3:我想0來自死亡的工人,即盒子/線程崩潰?怎麼能有一個以上的回覆回到客戶端?

問題4:經銷商通訊的經銷商是否同步?

+0

爲什麼*你* downvote? –

回答

1

Q1:沒有連接,它的代碼,類似:

while(router.receive(x)) 
{ 
    dealer.send(x) 
} 

注:不是真正的代碼,需要處理路由信息和標記結束幀等

Q2:是的,假設你的工作人員對這些請求做出迴應如果工作人員正在發送回覆,並且您沒有在服務器的經銷商處進行投票,那麼工作人員最終會在排隊郵件達到「高水位」時阻止工作。

Q3:取決於用例。經銷商/路由器插座沒有發送/接收消息數量的條件(不同於REQ/REP是1:1)。例如,如果工作人員完成的任務可能需要很長時間,則可能需要發送中間的「x%完成」消息。

問題4:請參閱問題3的答案,我將添加:取決於您是否希望它。套接字不強制它,你可以將它編碼爲同步或異步。

+0

每#2聽起來像經銷商N N交易員需要投票。經銷商與經銷商的關係如何? –

+0

如果您將其視爲經銷商之間的同步連接(即1:1已發送:收到的消息),那麼您可以在每次發送後調用接收。否則,你可能需要進行民意調查。 – David

+0

其實,服務器的'ROUTER'如何爲'DEALER'客戶端輪詢?到目前爲止,我只看到端口上的輪詢,而不是單獨的客戶端(連接到相同的綁定端口)? –