关注在 LAN 中断时积压网络消息的方法

Concerned about methods of backlogging network messages in the event of a LAN outage

我在 Windows 7 嵌入式环境中工作,加载所有内容后剩下的资源很少。

客户端(Win 7 Embedded)可以向服务器发送大约 8 种不同的消息类型,但其中只有 2 种是非常重要的(必须在任何网络中断后发送)。另外6条消息我设置了发送失败重试30秒左右

我担心的是我将如何在内存中保存这些消息。到目前为止,我的两个想法是:

1) 让消息尝试发送的线程处于休眠状态,直到网络连接恢复(这可能会导致大量休眠线程,例如,网络中断几天)。

2) 将无法发送的消息写入文件,然后刷新文件并在重新连接时发送每条消息。

我想知道如果说 50 个线程处于 'Sleep' 状态,方法 1 是否会导致过多的开销?

如果是,我应该选择选项 2 吗?

也许还有另一个更聪明的选择,我还没有考虑过。

2 of them are of high importance

如果是这种情况,您可能不应该依赖于将消息留在内存中,尤其是考虑到

if, say, the network was out for several days

如果出现断电或其他情况restart/failure,在 RAM 中的消息将会丢失。

我建议将消息​​序列化到持久存储(例如磁盘)。当您检测到网络连接已恢复时,请检查序列化消息并发送它们。确保消息在从磁盘中删除之前已传输(以防网络在您第一次检测到它后再次出现故障,但在您发送消息之前)。