gpt4 book ai didi

.net - 使用 MSMQ 的多播时如何检测不可恢复的数据丢失?

转载 作者:行者123 更新时间:2023-12-01 17:59:58 26 4
gpt4 key购买 nike

使用 MSMQ 多播时,如果(启用多播的)队列接收到一些消息,然后机器遇到暂时的网络连接丢失,则在重新建立连接时它将再次开始接收消息。如果网络中断的持续时间很短,那么队列将接收所有消息(即使是在接收机器断开连接时发送的消息)。但是,如果持续时间足够长(几分钟),那么一些消息将会丢失......接收到的消息会有间隙。

这是预期的行为,因为 MSMQ 多播提供可靠(但不保证交付)。我的问题是 MSMQ 是否在数据丢失时公开信息。如果我理解正确,PGM已经能够检测到“不可恢复的数据丢失”,但是 MSMQ 是否会公开此信息?

一种想法是在每次发送时递增的每条消息中包含一个整数。这将允许接收者检测消息中的间隙(来自单个发送者)。但是,我相信 PGM 已经做到了这一点。如果 PGM/MSMQ 已经可以检测到这一点,我不想在应用程序级别添加它。

有什么建议么?

最佳答案

我从来没有使用过 MSMQ,所以我不确定是否有办法通知底层 PGM 套接字的不可恢复丢失。但是,在原始 PGM 套接字上,如果无法恢复丢失的数据包(例如,发送方的重发缓存中不再有数据),套接字将断开连接。在这种情况下,该套接字的 Receive 方法将返回 WSAECONNRESET。
MSMQ 中是否有连接/断开连接事件可能会提醒您底层套接字连接重置?

就个人而言,我总是在我的消息中包含某种应用程序级别的标题,例如对于您的情况,一个源(如果接收者从多个发送者接收数据,您需要这个)和一个序列号属性,然后检查间隙,与一些带外快照服务配对,允许您通过可靠的协议(protocol)请求丢失的数据像 TCP。

关于.net - 使用 MSMQ 的多播时如何检测不可恢复的数据丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397518/

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