在任务上无限期地调用. continuewith是否是模拟队列和循环线程的有效方法



假设一个web API在一天中以一定的频率被调用,每小时20次。调用API后开始的操作是长时间运行的,每个操作可能持续几分钟。

我需要把任务按一定的顺序分组处理。例如,这些请求来自的公司需要按顺序排队,但来自其他公司的请求可能同时在自己的组中并行运行。

而不是使用队列和循环线程,我可以有一个字典,GroupId,任务,只是附加一个新的任务与ContinueWith每次请求进入该组?

我对它进行了测试,对于10k个请求,大约每10毫秒一个请求。它运行得很好,但是我需要一些关于如何在生产环境中工作的经验或想法的意见。

基本方法是合理的。您可以通过创建一个为您管理项目队列的TaskQueue类,将您正在使用的机制从业务逻辑中抽象出来,允许您将该概念作为抽象来处理(您没有展示您的代码,但是在附加这些延续时需要小心,以确保当两个项目试图同时附加它们自己时不会出现竞争条件)。这不是特别很难做到,但它非常有用,因为它意味着您不需要考虑业务逻辑中困难的低级线程问题。

最新更新