ZeroMQ 管道模式

5 投票
2 回答
1875 浏览
提问于 2025-04-17 06:45

我正在实现一个消息系统,外部程序叫做代理(agent),它们可以通过ZeroMq生产者进行通信。每当发生一个重要事件时,代理就会向ZeroMq发送一条消息。

我想用管道模式来实现这个系统。

我找到了一些例子(比如通风机-工作者-结果管理器),但通风机组件会创建一个端点来接受工作者的连接,然后批量发送所有消息。

但我的情况有点不同。我的“代理”每次需要发送事件时都会连接,而不是等待工作者的连接,所以我在想这样做是否可行?还有一个重要的点是,消息必须按照发送的顺序进行处理。

2 个回答

1

REQ-REP是一种请求和回复的方式,适合需要来回交互的场景。听起来你更想要的是发布-订阅模式(PUB-SUB)。你可以先在一个大家都知道的端口上设置一个订阅者(SUB),然后让客户端连接到这个端口,进行发布(PUB)。

2

你应该把不同的模式结合起来,才能找到解决办法。我觉得应该有一个专门的中介,它负责为真正的请求代理(REQ代理)创建回复代理(REP代理收集器)。这些代理收集器在和系统沟通之前,应该先处理好顺序问题。

撰写回答