【问题标题】:How to prevent queue items lost if application will shutdown unexpectedly?如果应用程序意外关闭,如何防止队列项丢失?
【发布时间】:2021-03-30 11:17:51
【问题描述】:

我已经在我的应用程序中使用专用线程实现了队列。

我担心将项目保留在队列中。 如果由于某种原因,当新项目添加到队列中时,该应用程序会意外关闭,该怎么办? 据我了解,专用线程在应用程序关闭后不能保证工作。该进程可能已关闭。

所以我是否应该在每次入队时将项目保存到文件中,然后在项目处理后删除?还是使用一些分离的应用程序或自托管任务更好?

编辑: 它是使用 System.Collections.Generic.Queue 的 WinForms 应用程序

【问题讨论】:

  • 您没有提到您使用的是哪种队列技术,但任何值得使用的技术都内置了持久性功能。
  • @Crowcoder 它是 System.Collections.Generic.Queue

标签: c# queue task


【解决方案1】:

通常要保持队列持久化 - 您必须使用某种存储。将数据保存在内存中不会防止数据丢失。

保持其可靠性的最简单方法 - 使用一些内置的云解决方案,例如 Azure Service Bus/ Azure Queue StorageAmazon SQS 等。

如果您自己构建系统 - 您可以使用 DB 甚至文件存储。

【讨论】:

  • 您认为什么对多线程队列更有用:文件、DB 还是 MSMQ?据我了解 MSMQ 使用存储文件,因此这只是处理文件的有用包装器。我说的对吗?
猜你喜欢
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 2014-04-18
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
  • 2016-03-31
相关资源
最近更新 更多