【发布时间】:2016-08-21 14:04:11
【问题描述】:
如果需要查询一个包含 100,000 行以上结果集的数据库。然后我需要在哪里处理这些数据。这可以在连续的网络作业中成功完成吗?如果是这样,队列是如何管理的?我目前有这个问题
其中讨论了使用带有时间触发器的连续网络作业的问题。如果 webjob 重新启动,队列将被转储,转储的意思是,队列不再被处理。如果使用take 来限制查询中的行,则下一个 pollevent 不会处理任何数据。
这些网络作业在后台管理了这么多,其中有些很难很好地掌握来管理大型队列。
我的问题:
网络作业是否适合处理大量数据?
如果是这样,它们应该是连续的还是计划的?为什么?
【问题讨论】:
-
不知道你为什么要发布 cmets 告诉人们如何投票/不投票。这不是 StackOverflow 的工作方式(但你应该知道,考虑到你几乎 12K 的代表)。
-
看起来像 this one 的副本。
-
当然,他们可以处理大量数据。但是触发机制 afaik 不在 sql 触发器中,而是在您创建的其他东西中。这意味着您编写了一些熟化的代理来执行触发器。然后它可以对您的
database with a resulting set of 100,000 rows plus起作用。我不知道我会让它连续。无论如何,他们都容易失败。我建议利用队列机制进行状态检查和工作流,这样任何失败的网络作业都可以重新振作起来。 -
这就引出了一个问题,为什么还要在网络作业中使用它。当您拥有 c# 应用程序(或其他)并确定更流畅的时间表时,为什么要创建一些类似 cron 的表达式或门户。当我说流体时,我的意思是,它会根据你构建的启发式方法而变化
-
我在另一个平台上与人合作,但类比是相同的。我尝试做的第一件事是构建一个单独的代理。因为我总是对事件调度程序的僵化或它的力量感到失望。意思是,它不允许某些调用。所有这一切都随着代理而消失。所以,是的,正如你所说,他们可以做很多事情。但我们必须为不能做的事情做好准备。在我们的例子中,“数据加载”是被禁止的(不是我们而是框架)。还有其他限制。此外,我们需要在失败时具有弹性(有点像 Erlang 的 Let it Crash via Akka)
标签: asp.net azure azure-webjobs