【问题标题】:Controlling queue polling times控制队列轮询时间
【发布时间】:2018-02-21 05:03:40
【问题描述】:

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

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

我的问题是 - 因为我并不真正关心实时接收这些通知电子邮件...如何降低触发器检查队列的频率?

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

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

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

【问题讨论】:

  • 降低频率有什么好处?
  • 我想这样做是为了降低成本。我的印象是,如果我们每隔一秒左右检查一次队列,成本会更高

标签: azure azure-functions azureservicebus


【解决方案1】:

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

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

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

【讨论】:

  • 嗨@Mikhail Shilkov,您能否分享更多关于扩展控制器如何管理消息检索的信息?你指的是哪个链接?谢谢!
  • 信息有些稀疏,但您可以看到提到的比例控制器,例如这里:docs.microsoft.com/en-us/azure/azure-functions/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
相关资源
最近更新 更多