gpt4 book ai didi

azure - Azure 辅助角色中重复事件的正确代码模式,每个事件之间有相当大的延迟

转载 作者:行者123 更新时间:2023-12-02 08:10:34 26 4
gpt4 key购买 nike

我有一个 Azure 辅助角色,其工作是定期针对 SQL Azure 数据库运行一些代码。这是我当前的代码:

const int oneHour = 216000000; // milliseconds

while (true)
{
var numConversions = SaveSeedsToSQL.ConvertRemainingPotentialQueryURLsToSeeds();
SaveLogEntryToSQL.Save(new LogEntry { Count = numConversions });
Thread.Sleep(oneHour);
}

Thread.Sleep(216000000) 是对这种常规但不频繁的事件进行编程的最佳方式吗?还是有某种我应该利用的 Azure 辅助角色的唤醒并再次运行机制?

最佳答案

这段代码当然可以工作,但是有一些问题:

  1. 你可能会在某个地方失败,这个计划就会全部被取消。那如果您必须在特定时间实际执行此操作,这一点很重要。
  2. 这里没有并发控制。如果你只想做一次某事,您需要一种机制,使单个实例能够执行有效,而其他实例则无效。

这个问题有几个解决方案:

  • 在角色(内置)上运行 Windows 计划程序。这解决了问题 1,但没有解决问题 2。
  • 运行 Quartz.NET 并安排事情。这解决了#1,并且根据您的操作方式,也解决了#2。
  • 在服务总线或 Windows Azure 队列中使用 future 计划的队列消息。这样就解决了这两个问题。

前两个选项需要注意,所以我认为最后一个选项值得更多关注。您可以简单地创建您的角色能够理解的消息并将其发布到队列中。一旦时机到来,它就会变得可见,您通常的投票角色将看到它并可以对其进行处理。这样做的好处是它既具有时间精确性,又可以由单个实例对其进行操作,因为它是队列消息。完成工作后,您可以让实例安排下一项工作并将其发布到队列中。我们一直在使用这种技术。您只需小心,如果由于某种原因您的角色在安排下一个角色之前失败,整个系统就会失败。您应该在那里进行一些健全性检查和保障措施。

关于azure - Azure 辅助角色中重复事件的正确代码模式,每个事件之间有相当大的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11190868/

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