2011-11-21 46 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。