如果PUB首先启动并连接到XPUB / XSUB代理,则消息将被丢弃,直到SUB未连接为止

时间:2018-02-28 10:25:39

标签: c++ message-queue zeromq

我已经实现了一个基于ZeroMQ的基础架构,使用PUB - c ++中的代理,将来自多个SUB - s的消息传递到多个XPUB/XSUB - 。

多个PUB(s) - > XSUB/XPUB代理 - > multipe SUB(s)

如果我启动所有SUB(s)然后启动PUB(s),那么它按照设计工作,但如果我先启动PUB(s)然后我启动SUB(s),然后删除PUB(s)之间的所有消息。

有解决方法吗?

由于在应用程序中可能会发生SUB关闭或崩溃,因此不应删除来自任何PUB的{​​{1}}消息。

1 个答案:

答案 0 :(得分:0)

这是一个众所周知的功能。 ZeroMQ设计故意以这种方式工作。

如果你试图规避这一点,最好先重新阅读ZeroMQ设计准则,其中一个是ZeroWarranty原则。

最好的下一步是访问Pieter HINTJENS的精彩且富有洞察力的书,也可以pdf格式提供," 代码连接:第1卷&#34 ;

讨论了原则和设计工作方法,因此值得花时间和精力阅读整个故事,并了解可能有助于您进一步完成专业设计的设计原因和技术选项。