c# - 设计 : Queue Management question (C#)

标签 c# .net encoding queue

我想建立一个windows服务,将使用远程编码服务(如encoding.com、zencoder等)上传视频文件进行编码,编码过程完成后下载它们,并进行处理。

为了做到这一点,我正在考虑使用不同的队列,一个用于处理当前正在等待的文件,一个用于处理正在上传的文件,一个用于等待编码完成的文件,还有一个用于下载它们。每个队列都有一个限制,例如在某个时间只能上传 5 个文件进行编码。队列必须可见并且能够从崩溃中恢复——目前我们通过将队列写入 SQL 表并在单独的表中管理项目数来实现这一点。

我还希望队列在后台运行,彼此独立,但能够随着进程的进行将文件从一个队列传输到另一个队列。

我最大的疑问是关于如何构建和管理队列,而不是限制每个队列中的项目数量。

我不确定什么是正确的方法,非常感谢任何帮助。
谢谢!

最佳答案

您可能不需要将工作分成单独的队列,只要它们在逻辑上以某种方式分开(标记为不同的“工作类型”等)即可。

在我看来,挑战在于根据作业类型,不要从队列中提取和处理超过给定数量的作业。前一段时间我遇到了一个类似的问题,导致了 question here on SO ,以及随后的 blog post with my solution ,两者都可能会给您一些想法。

简而言之,我的解决方案是保留一个“ token ”列表。每当我想执行一项有某种限制的工作时,我都会先拿起一个 token 。如果没有可用的 token ,我将需要等待一个可用。然后,您可以使用任何适合处理队列的排队机制。

关于c# - 设计 : Queue Management question (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3662232/

相关文章:

c# - 仅返回 base.method 时隐藏带有 new 关键字的方法的原因是什么?

java - 如何避免在 Java SOAP 客户端中对 < 和 > 进行编码

c# - 如何通过win forms c#将数据发布到网站

C# 事件处理程序 : when are the subscribers invoked?

c# - 将对象中的 Null 值转换为空字符串

video - libx264 和 ffmpeg 如何编码和解码 H.264

python - Django:生产环境的编码问题

c# - 将 vs 2012 C# 与 visio 2007 集成时出现 Com 错误

c# - .net 服务 - 如何在 web.config 中设置多个数据库

c# - SQL SMO 执行批处理 TSQL 脚本