gpt4 book ai didi

c# - 在其他一切正常的情况下处理离线数据库?

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:05 24 4
gpt4 key购买 nike

我有一个 Windows 服务可以监视多个邮箱的新邮件。一旦新邮件到达,该服务负责确定如何处理它。它可以解析它并将其输入数据库,忽略它,或者如果它不识别它则将其转发给某人。

如果/当我们的电子邮件服务器出现故障时,我已经有了一个有效的实现,该服务将尝试每 n 分钟重新连接一次,直到成功。另一个问题是如果/当数据库服务器出现故障时会发生什么。我们的服务很可能仍在运行并解析电子邮件,但如果数据库插入失败,则会停止。

如何处理数据库宕机?我没有让我的服务负责与数据库交互,而是使用像 NServiceBus 这样的消息传递框架,并为每个需要添加的新项目发送消息。然后该服务将尝试处理它。如果由于某种原因(很可能是数据库已关闭)处理失败,只需将项目留在队列中以供稍后处理?

最佳答案

一种可能:

如果数据库宕机,将完成的工作序列化为XML或二进制格式,如果数据库宕机,将其存储在文件系统中。将此视为离线队列。当数据库恢复时,让进程反序列化数据,然后将其存储在数据库中。

这样你仍然可以考虑处理过的数据并在以后插入它。队列(备份)是文件系统。

关于c# - 在其他一切正常的情况下处理离线数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7743344/

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