zmq协议发生错误时如何得到通知

问题描述 投票:0回答:1

通常,zmq套接字会不断重新连接,直到连接为止。但如果它连接到错误的地址,它可能会停止重新连接。

一个例子是,假设一个 zmq 订阅者尝试连接到 tcp://127.0.0.1:40008,并且 echo 服务器在 127.0.0.1:40008 启动,该订阅者将连接到该地址,然后由于协议错误而立即断开连接,并且它也会停止重新连接,因此如果稍后 echo 服务器停止并在该地址启动 zmq 发布者,订阅者将不会连接到它来接收消息。

这是一个问题,因为它悄无声息地发生,很难找出问题所在。有没有办法知道 zmq 内部发生了 protol_error (或任何类型的错误)?或者有没有办法让订阅者重新连接,无论什么原因导致断开连接?

zeromq
1个回答
0
投票

如果您向套接字添加

zmq_socket_monitor
,您可以获得有关连接活动的反馈,包括有关握手失败原因的详细信息。

我广泛使用它来帮助调试问题

https://libzmq.readthedocs.io/en/latest/zmq_socket_monitor.html

ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL
似乎是适合您的案例的合适人选

© www.soinside.com 2019 - 2024. All rights reserved.