控制队列轮询时间

Controlling queue polling times

我有一段代码,每次在我的网络应用程序上添加新文章时,它都会将一条消息推送到服务总线队列。然后,我的函数应用程序中带有 SendGrid 输出的 ServiceBusTrigger 接收到它,该应用程序向我发送一封电子邮件,告诉我有人添加了一篇新文章。

这根本不会经常发生,我决定让它以这种方式运行的唯一原因是让我的脚接触一些很棒的 Azure 服务。

我的问题是 - 因为我真的不关心实时接收这些通知电子邮件...我怎样才能减少触发器检查队列的频率?

在我的函数应用程序 host.json 中,我已经将 maxConcurrentCalls 最小化为 1(默认值为 16)。

  "serviceBus": {
    "maxConcurrentCalls": 1,
    "prefetchCount": 100,
    "autoRenewTimeout": "00:05:00"
  }

有没有一种方法也可以设置它,以便我的触发器仅每 30 分钟或类似时间检查一次队列?

没有。消息检索由 Scaling Controller 管理,除了您已经看到的 host.json 个参数外,您对其影响不大。

要实现您的方案,您需要每 30 分钟切换到计时器触发器 运行 并从服务总线手动检索消息,这可能会失去 Azure Functions 的许多优势。

更新:您现在可以integrate your Service Bus to Azure Event Grid然后使用事件网格触发函数。不幸的是,截至目前,它仅适用于 Premium Service Bus 命名空间,因此您很可能必须等到他们将该功能扩展到较低层。