Azure事件网格功能触发器-试用期

时间:2020-06-03 08:29:14

标签: azure azure-functions azure-eventgrid

我们有一个带有 Azure Event Grid主题的Azure设置,并且我们有一个 Azure Function Service ,其中包含约15个通过不同前缀订阅该主题的功能过滤器。 Azure功能服务被设置为基于消耗的资源,并且应该能够根据需要进行扩展。

每个订阅均设置为在放弃活动前最多4个小时内尝试发送10次。到目前为止,一切都很好,并且设置在大多数情况下都按预期工作。

在某些情况下(对于我们未知的情况),事件网格主题似乎无法将事件传递给不同的功能。我们可以看到,死信存储中充满了尚未交付的事件。

现在我的问题

从日志中,我们可以看到未传递各种事件的原因。原因通常是结果试用期。我们找不到Microsoft提供的有关这实际上意味着什么的任何信息。

此外,网格失败,并且在超时策略(4小时)和传递尝试策略(10次重试)之前,将事件添加到死信日志中已超过。有时,功能服务会处于空闲状态,并且不会从Grid接收任何事件。

你们中的任何一个人是否对我们如何进行故障排除有任何想法?当出现错误信息“试用”时,Grid和Funciton App之间发生了什么?我们注意到的一件事是,与传递的事件数量相比,从网格到功能应用程序的连接数量很多。 除了事件网格,没有其他与Function App的传入连接。

一封死信的例子

[{
   "id":"a40a1f02-5ec8-46c3-a349-aea6aaff646f",
   "eventTime":"2020-06-02T17:45:09.9710145Z",
   "eventType":"mitbalAdded",
   "dataVersion":"1",
   "metadataVersion":"1",
   "topic":"/subscriptions/XXXXXXX/resourceGroups/XXXX_STAGING/providers/Microsoft.EventGrid/topics/XXXXXstaging",
   "subject":"odl/type/mitbal/v1",
   "deadLetterReason":"TimeToLiveExceeded",
   "deliveryAttempts":6,
   "lastDeliveryOutcome":"Probation",
   "publishTime":"2020-06-02T17:45:10.1869491Z",
   "lastDeliveryAttemptTime":"2020-06-02T19:30:10.5756332Z",
   "data":"<?xml version=\"1.0\" encoding=\"utf-8\"?><Stock><Action>ADD</Action><Id>123456</Id><Store>123</Store><Shelf>1</Shelf></Stock>"
}]


功能服务指标

  • 蓝色=连接(计数)
  • 红色=函数执行(计数)
  • 白色=请求(计数)

Stats

1 个答案:

答案 0 :(得分:0)

我不确定您是否在这里找到了问题,但是这里有一些类似情况下的其他见解。

首先,试用期是目的地不健康的结果,Event Grid仍会尝试交付。

根据图表,函数看起来达到了100个执行标记,然后花了一段时间扩展到下一个100个。您可以根据每个函数的执行情况来调整host.json设置,以获得更好的结果会。

包括scale controller logs可能会更有助于了解横向扩展时内部发生的事情。

另外,另一种选择是先将事件发送到service busevent hubs中,然后从那里运行一个函数。