2011-11-21 38 views
5

我正在實現一個消息系統,其中名爲座席的外部程序能夠通過ZeroMq生產者進行通信。因此,每當發生感興趣事件時,代理都會向ZeroMq發送消息。ZeroMQ管道模式

我很想使用流水線模式來實現這個。

我發現了一些示例(呼吸機 - 工人 - 結果管理器),但呼吸機組件創建了一個端點用於接受來自工作人員的連接,然後批量發送所有消息。

我的情況完全不同。每當需要發送事件時,「代理」都會連接 - 它不會等待工人的連接,所以我想知道這是否可能?另外,重要的事實是消息必須按照發送的順序進行處理。

回答

2

你應該混合模式來實現你的解決方案。我認爲它應該是specialized broker,其實例化REP 代理收集器以用於真正的REQ代理。那些代理收集器應在與系統通信之前負責訂購。

+0

這可能是一個不錯的解決方案,除非我不需要在這裏進行雙向通信。代理不需要知道消息是否已交付給代理 - 只需發送消息。 – Nedo

+0

我不確定,但[AFAIK](http://en.wiktionary.org/wiki/AFAIK),ZeroMQ中沒有unidirecional sockets的概念。如果您的REQ代理確實需要與代理保持連接,則每次發送事件時都要關閉套接字。 –

1

REQ-REP是您想要往返的時間。聽起來就像你想要一個PUB-SUB。在知名端口上設置綁定的SUB,然後讓客戶端連接到該端口併發布PUB。