【问题标题】:Event Grid, Azure Functions Event Handler, EventGridTrigger behavior事件网格、Azure Functions 事件处理程序、EventGridTrigger 行为
【发布时间】:2019-12-10 15:39:24
【问题描述】:
我试图了解在 Azure Function v2 函数中使用 EventGridTrigger 时 EventGrid 的行为。 This page(在 MS 官方文档中),详细说明了与从事件处理程序返回的状态代码相关的特定行为,但没有具体说明正在使用什么类型的事件处理程序。我只能根据它用于 webhook 的状态代码的使用来假设。但是,Azure 门户中的订阅配置具有 Azure Functions 的事件处理程序。使用此事件处理程序时,如何从 azure 函数触发这些特定行为?此外,与标准 webhook 事件处理程序相比,使用它有什么区别?我发现 Azure Function 事件处理程序提供的“附加功能”多次提及,但我似乎找不到任何详细说明任何特定内容的文档。
【问题讨论】:
标签:
azure-functions
azure-eventgrid
【解决方案1】:
基本上,Message delivery status 只能由 WebHook 和 HybridConnection 等端点类型以编程方式处理。
在 EventGridTrigger 的情况下,处理程序只允许在重试消息传递时抛出异常。换句话说,没有异常类型可以强制 BadRequest 状态代码立即触发死信处理(如果配置了死信)。
除此之外,EventGridTrigger 函数不会传递有用的 aeg 标头,并且当前版本无法处理传递架构 = CloudEventSchemaV1_0 的消息。
请注意,WebHook 和 HybridConnection 处理程序有责任为 validation 握手调用构建响应。 Azure 函数处理程序在 EventGridTrigger 的预处理器中内置了此验证逻辑(目前仅适用于 EventGridSchema 和 CustomInputSchema)
更新:
AEG 事件向端点处理程序发送以下 aeg 标头:
aeg-subscription-name=MYSUBSCRIPTION
aeg-delivery-count=0
aeg-data-version=1.0
aeg-metadata-version=1
aeg-event-type=Notification
aeg 标头可用于事件处理程序的附加功能,例如; long running process、扇入模式等