gpt4 book ai didi

python - 如何在 ZeroMQ 中接收 N 个订阅者中的 1 个错过的消息?

转载 作者:太空狗 更新时间:2023-10-30 02:33:55 25 4
gpt4 key购买 nike

我想在 Python 应用程序中使用 AMPQ 服务,但还没有使用过 ZeroMQ。所以我想知道这是否可以做到:

  • receiver1.py 和 receiver2.py 从一个主机和端口订阅“common_messages”
  • receiver2.py 崩溃
  • 发件人发送消息
  • receiver1.py 成功接收
  • receiver2.py 重新启动
  • receiver2.py 接收它不在时发送的消息

这能做到吗? ZeroMQ 是否跟踪已发送的消息?如果在消息发送后订阅,ZMQ 是否会检测哪些旧消息应该被接收,哪些不应该被接收?

最佳答案

如果您使用的是 PUB-SUB 连接(看起来好像您正在描述),那么快速回答是否定的。一刊socket丢弃消息而不是将它们排队。

即使您将套接字类型更改为 PUSH 和 PULL,您仍然会遇到问题。是的,PUSH 套接字会阻塞未收到的消息,但因为您将连接另一个客户端,所以消息将被发送,因此如果其中一个客户端断开,则不会阻塞。对于 PUSH-PULL 类型,您无法像使用 PUB-SUB 连接那样“订阅”某些消息。

您可以实现一些逻辑来执行您所描述的操作。查看 zmq 的 guide (第二个项目符号)以查看他们为可靠连接“推荐”的内容。所描述的本质上是一种跟踪客户端接收到哪些消息的方法(递增 id?)以及客户端可以“请求重新发送丢失的消息”的第二个连接。


上面的部分也可以通过客户端到服务器的“心跳”来实现,它给出它收到的最后一条消息。服务器对此进行检查以确保客户端没有落后,如果落后则重新发布消息。

关于python - 如何在 ZeroMQ 中接收 N 个订阅者中的 1 个错过的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11119550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com