Python 如何在ZeroMQ中为N个订阅服务器中的1个接收丢失的消息?
我想在Python应用程序中使用AMPQ服务,但还没有使用ZeroMQ。所以我想知道这是否可以做到:Python 如何在ZeroMQ中为N个订阅服务器中的1个接收丢失的消息?,python,zeromq,Python,Zeromq,我想在Python应用程序中使用AMPQ服务,但还没有使用ZeroMQ。所以我想知道这是否可以做到: receiver1.py和receiver2.py从一个主机和端口订阅“公共_消息” 破产管理人2.2 发送者发送消息 receiver1.py成功接收到它 receiver2.py已重新启动 receiver2.py接收不存在时发送的消息 这能做到吗?ZeroMQ是否跟踪已发送的消息?如果一个用户在消息发送后订阅,ZMQ是否检测到哪些旧消息应该接收,哪些不应该接收?如果您使用的是一个PUB
- receiver1.py和receiver2.py从一个主机和端口订阅“公共_消息”
- 破产管理人2.2
- 发送者发送消息
- receiver1.py成功接收到它
- receiver2.py已重新启动
- receiver2.py接收不存在时发送的消息
这能做到吗?ZeroMQ是否跟踪已发送的消息?如果一个用户在消息发送后订阅,ZMQ是否检测到哪些旧消息应该接收,哪些不应该接收?如果您使用的是一个PUB-SUB连接(似乎您正在描述),那么快速回答是否。发布会丢弃消息,而不是将消息排队 即使您将插座类型更改为推拉式,您仍然会遇到问题。是的,推送套接字将阻止未接收到的消息,但由于您将连接另一个客户端,因此消息将被发送,因此,如果其中一个客户端断开,消息将不会被阻止。使用推拉类型,您无法像使用PUB-SUB连接那样“订阅”某些消息 您可以实现一些逻辑来完成所描述的内容。检查zmq(第二个项目符号),查看他们对可靠连接的“建议”。所描述的本质上是一种跟踪客户端接收到哪些消息(递增id?)的方法,以及客户端可以“请求重新发送丢失的消息”的第二个连接
上面的部分也可以通过一个客户端到服务器的“心跳”来实现,该心跳给出了它收到的最后一条消息。服务器对此进行检查,以确保客户端没有落后,如果落后,则重新发布消息。
g19fananic已经回答了您的问题。
他补充说:
ZeroMq提供超级套接字。使用它的主要优点是,一旦您确定了一种通信模式,就可以很容易地使用它。你不必担心