ZeroMQ(0MQ)服务器保留客户端发送消息的状态信息的时间为多长时间?

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

我正在研究ZeroMQ中的消息传递保证,如果它可以确保一次精确的消息传递。

[经典方法是将消息号和客户端ID保留在接收节点,并且每次将收到的消息与日志进行比较,以检查是否已接收到消息。

在ZeroMQ(0MQ)指南的第4章中:

“要处理非幂等操作,请使用检测和拒绝重复请求的相当标准的解决方案。这意味着:

  • 客户端必须为每个请求添加唯一的客户端标识符和唯一的消息编号。
  • 服务器在发回答复之前,使用客户端ID和消息号的组合作为密钥来存储它。
  • 服务器在从给定客户端收到请求时,首先检查它是否具有该客户端ID和消息号的答复。如果是这样,它将不处理请求,而只是重新发送答复。“

我想知道日志的类型ZeroMQ将消息和客户端ID保存到其中(向量,映射,数组...),以及每个客户端保持状态的时间(ID,消息..)。 。

是否有超时删除客户信息?删除特定客户端的信息后,如果收到旧的重复消息该怎么办?

logging duplicates zeromq messaging reliability
1个回答
0
投票

欢迎使用零之禅。

如果从未使用过ZeroMQ,可以在深入了解更多细节之前先看看"ZeroMQ Principles in less than Five Seconds"

Q

“是否存在删除客户端信息的超时?”

不,没有这样的超时可以从文档化的API访问到用户端应用程序。

Q

“删除特定客户端的信息后,如果收到旧的重复消息该怎么办?”

{ .bind() : .connect() }关系的存在期内,在合法合作的交易对手之间进行设置,只有一项保证-任何类型的消息要么以原始1:1二进制副本的形式传递,要么根本不传递(目的是保留任何类型的消息,无论是大的,小的,多帧的还是空的消息,都是一种原子的(不可分割的)实体)。

ZeroMQ过去一直是无代理消息传递,其中不记录整个基础架构中消息流的状态,通过(不存在)代理及其服务进行的重构较少。

ZeroMQ的操作原理已在已发布的ZMTP / RFC文档中详细记录,该文档定义了任何第三方的最小功能范围,从而成为符合ZeroMQ的合作对等方。然而,大多数ZMTP / RFC记录的要求是在ZeroMQ或3rd-Pty-ZeroMQ仿真节点内部实现的,并且无法通过已发布的API接口访问到用户端应用程序。

ZeroMQ内部设计始终可以在源代码存储库中访问。

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