2013-10-23 95 views
2

什麼是正確的zeromq消息模式來選擇實現服務器,它需要處理N-客戶端之間的雙向通信(客戶端可以發出請求,服務器可以發出通知,這必須是可靠的。因此pub/sub在這裏不工作)? 我做了什麼: 服務器有REP處理客戶端請求,REQ發送通知給客戶端,SUB獲取一些事件。 客戶端REQ發出請求到服務器,REP從服務器接收通知,SUB得到一些事件 然後: 服務器輪詢POOLIN在REP和SUB插口 客戶端輪詢POOLIN在REP和SUB插口結合多個req套接字和pub的zeromq輪詢器

一旦輪詢& POOLIN,REP套接字調用recv,比做一些處理,比發送。 儘快輪詢& POOLIN,SUB套接字調用recv。

該模式工作不穩定。如果我在數據發送之前通過一個REQ套接字調用POLLIN輪詢,直到REQ套接字得到回覆,模式正在工作,但這有點奇怪。我錯過了什麼嗎?

回答

1

你真的需要阻止REQ/REP套接字嗎?我建議要與DEALER在客戶端上完全異步,檢查:

https://stackoverflow.com/a/19417116/791406

希望它能幫助,

+0

我想REQ-REP是有幫助的,因爲阻塞調用允許簡單的代碼路徑。經銷商路由器代碼將成爲一個事件驅動。感謝你的回答。我會發布結果。 – user2910794

+0

是的,但zeromq是關於事件的!阻止REQ/REP的問題是,如果出現問題,您的應用程序將無限期地掛起。始終以異步方式發送,並在接收時至少以超時輪詢進行輪詢 – raffian