由于似乎无法查询/检查底层 ZeroMQ 队列/缓冲区套接字以查看它们的利用率,因此是否有某种方法可以检测在发送/排队时由于发布者套接字中的缓冲区已满而导致消息被丢弃的情况?
例如,如果发布者队列已满,则zmq_send
操作只会删除该消息。
基本上,我想要实现的是一种检测队列压力和/或满的情况的方法,以便能够(稍后)调整解决方案以更好地工作。一种替代方法是向每条消息添加序列号,并在订阅者中进行简单的计算,但我永远无法确定消息是否由于发布者中的缓冲区已满而丢失。
ZeroMQ 指南中有一个示例(如果你想愉快地使用 0MQ,你应该阅读并消化它):http://zguide.zeromq.org/page:all#Slow-Subscriber-Detection-Suicidal-Snail-Pattern
该机制正如您自己回答的那样,在消息中添加序列号,并允许订阅者检测间隙并采取适当的操作。对于大多数 pubsub 场景,您可以将默认 HWM(1,000)提高到更高的值;这取决于您的平均邮件大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)