ZeroMQ阻止一对多模式

时间:2016-06-14 22:43:56

标签: design-patterns zeromq blocking

我已阅读ZeroMQ文档并认为我了解3种基本模式: REQ/REP PUB/SUB PUSH/PULL

但是,我没有看到他们如何允许我构建一个A向B和C发送消息的东西,具有阻塞行为。

也就是说,假设我为A-> B和A-> C设置了1024条消息的限制。然后,如果一个队列填满,我希望A停止发送消息,直到两个接收器都有空间,而不是只丢弃消息(PUB/SUB)。

PUSH/PULL不会向A和B传递每条消息,但只传递其中一条消息。

有没有办法用ZeroMQ

执行此操作

谢谢!

1 个答案:

答案 0 :(得分:1)

答:是的,有

ZeroMQ 是一个很棒的工具箱。多年后我敢说,其中任何一个预先构建的 S caleable F ormal C 通信 P 实习生是一个基本模式。每一个都是正式行为的一个例子,当然,there are many cases, when these trivial behavioural pattern do not fit the needs the software Projects would like to have and advanced scenarios are coming to the stage.

我们走了。

ZeroMQ视为促成工具箱,而非解决方案提供商。所以,让我们放上袖子,开始设计项目所需的各种行为组合。

消息传递和信令组件受益于ZeroMQ元素的内置功能。设计应使缺失的部件和胶合逻辑符合项目规范。

一旦ZeroMQ socket-end-point没有给你任何代码驱动的控制它的阻塞行为,你需要添加这样的。

让我们假设A有一个传入套接字 A_IN (在PULL - 侧面A)。通过这种方式,您的代码可以根据您的项目特定逻辑,根据监控两个缓冲的状态,控制下一个传入消息的时间和长度({1}}来控制下次传入消息的时间和持续时间-watermarks和messaging-socket-state of exgress-traffic-directed socket PULLA_OUT_2_B)。

通过这种方式,您的代码可以为显式,特定于项目,管理阻塞状态A_OUT_2_C添加控件,添加元素状态检查功能,它对其他外部控制/系统信号的反射性以及许多其他功能之一可能希望到位。

  

欢迎走向 A_IN &的世界 ZeroMQ 并享受分布式系统中的消息传递和智能信令功能

If interested in more answers on elementary & advanced ZeroMQ topics, feel free to read other ZeroMQ & nanomsg related posts.