Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging ZeroMQ(0MQ)服务器保存发送消息的客户端的状态信息的时间有多长?_Logging_Duplicates_Zeromq_Messaging_Reliability - Fatal编程技术网

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

Logging ZeroMQ(0MQ)服务器保存发送消息的客户端的状态信息的时间有多长?,logging,duplicates,zeromq,messaging,reliability,Logging,Duplicates,Zeromq,Messaging,Reliability,我正在研究ZeroMQ中的消息传递保证,如果它能确保消息只传递一次 经典的方法是将消息编号和客户端ID保留在接收节点,每次接收到的消息都应与日志进行比较,以检查消息是否已被接收 在ZeroMQ(0MQ)指南第4章: “要处理非幂等运算,请使用相当标准的检测和拒绝重复请求的解决方案。这意味着: 客户机必须使用唯一的客户机标识符和唯一的消息编号标记每个请求 服务器在发回回复之前,使用客户端ID和消息编号的组合作为密钥来存储回复 服务器从给定的客户端接收请求时,首先检查是否有该客户端ID和消息号的答

我正在研究ZeroMQ中的消息传递保证,如果它能确保消息只传递一次

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

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

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

  • 客户机必须使用唯一的客户机标识符和唯一的消息编号标记每个请求
  • 服务器在发回回复之前,使用客户端ID和消息编号的组合作为密钥来存储回复
  • 服务器从给定的客户端接收请求时,首先检查是否有该客户端ID和消息号的答复。如果有,则不处理该请求,而只是重新发送答复。”
我想知道ZeroMQ将消息和客户端ID保存到日志中的日志类型(向量、映射、数组…),以及它为每个客户端保留状态的时间(ID、消息…)

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

欢迎来到Zen of Zero

如果您从未使用过ZeroMQ,
您可能会喜欢在深入了解更多细节之前先看看

Q:“删除客户端信息是否超时?”

不,没有这样的超时可以从记录在案的API访问到用户端应用程序

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

在合法合作的交易对手之间建立的
{.bind():.connect()}
-关系的有效期内,只有一项保证-任何类型的消息都可以作为原始消息的1:1二进制副本发送,或者根本不发送(其目的是保存任何类型的消息,大的、小的、多帧的,甚至是空的,一种原子(可分割的)实体)

ZeroMQ是并且一直是一种无代理的消息传递,其中不记录整个基础结构的消息流状态,通过(不存在的)代理及其服务重新构造的消息流越少

ZeroMQ的操作原则在已发布的ZMTP/RFC文档中有很好的文档记录,这些文档定义了任何第三方的最小功能范围,以便成为符合ZeroMQ的合作对等方。然而,大多数ZMTP/RFC文档记录的需求都是在“内部”实现的ZeroMQ或第三Pty ZeroMQ仿真节点,无法通过发布的API接口访问用户端应用程序


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

感谢您的回答。比如说ZeroMQ推/拉;正如我从您的回答中了解到的,在两个节点之间的连接过程中,会有一个日志,当0MQ连接断开时,将不会有日志,因为自连接结束后,任何接收消息都将被丢弃e没有连接。因此,如果0MQ连接中断,一些消息可能会丢失?甚至复制!