我试图了解在Azure Function v2函数中使用EventGridTrigger时EventGrid的行为。 This page(在MS官方文档中)详细说明了与从事件处理程序返回的状态码相关的特定行为,但并未具体说明正在使用哪种类型的事件处理程序。我只能根据状态代码的使用来假定它是供Webhook使用的。但是,Azure门户中的订阅配置具有Azure Functions的事件处理程序。使用此事件处理程序时,如何从azure函数触发那些特定行为?另外,与标准的webhook事件处理程序相比,使用此方法有何区别?我已经发现Azure Function事件处理程序提供的“附加功能”的一些提及,但是我似乎找不到任何详细说明任何特定内容的文档。
答案 0 :(得分:1)
基本上,Message delivery status仅可以由终结点类型(例如, WebHook 和 HybridConnection )进行编程处理。
对于EventGridTrigger,处理程序仅允许在重试消息传递时抛出异常。换句话说,没有任何异常类型可以强制 BadRequest 状态代码立即触发deadlettering的过程(如果已配置deadleatter)。
此外,EventGridTrigger函数不会传递有用的 aeg 标头,并且当前版本无法处理传递模式为CloudEventSchemaV1_0的消息。
请注意, WebHook 和 HybridConnection 处理程序有责任为validation握手调用建立响应。 Azure Function处理程序在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,扇入样式等