我在Linux中使用ZeroMQ(更具体地说是CZMQ)实现了一个消息总线用于IPC。这是我所实现的内容,这里。
我的问题是,当发布者缓冲区已满时,我如何知道发送的消息是否丢失?
在我的简单测试设置中,我使用了一个代理来进行发布-订阅。由于发送方快而接收方非常慢,导致消息达到HWM并在发送时丢失。我的期望是,发送会失败并显示“消息已丢失”错误,但事实并非如此。即使消息被丢弃(我可以通过在订阅端看到消息间隔来验证这一点),
我如何知道消息何时被丢弃?如果这是预期行为,并且ZeroMQ不让我们知道这一点,那么有什么解决方法可以找到我的发送是否丢失了消息?
我的问题是,当发布者缓冲区已满时,我如何知道发送的消息是否丢失?
在我的简单测试设置中,我使用了一个代理来进行发布-订阅。由于发送方快而接收方非常慢,导致消息达到HWM并在发送时丢失。我的期望是,发送会失败并显示“消息已丢失”错误,但事实并非如此。即使消息被丢弃(我可以通过在订阅端看到消息间隔来验证这一点),
zmq_msg_send()
也没有给我任何错误。我如何知道消息何时被丢弃?如果这是预期行为,并且ZeroMQ不让我们知道这一点,那么有什么解决方法可以找到我的发送是否丢失了消息?