我已经实施了一个EventGrid触发器来响应Blob Storage事件,其逻辑如下所示:
public static async void Run(
JObject eventGridEvent,
TraceWriter log,
ExecutionContext context)
{
string eventContent = ParseEvent(eventGridEvent);
HttpClient client = GetProxyClient();
HttpResponseMessage response = await client.GetAsync("blabla/" + eventContent);
string responseContent = await response.Content.ReadAsStringAsync();
log.Info("Here is the response :" + responseContent);
}
外部API响应速度很快(1秒或更短),我的主机配置设置为默认状态(因此允许并发调用数量不受限制)。
当同时添加多个blob(从2个blob开始)时,日志中会出现大量重复事件(脚本快速一次上传一个blob而没有等待时间)。
我感觉这可能是因为我从未确认收到事件,并且不知道我是否应该在我的代码中执行此操作,或者EventGrid Trigger是否会自动处理。
处理事件的确认逻辑是否应该在EventGrid Trigger(Http 200响应)中实现,还是由系统自动处理?
如果不是,请问我是否仍然会收到重复的事件?通常,在上传单个blob时,我会收到3-4次事件。
我提出这个问题的原因是,当使用Http Trigger并返回400响应时,我也会收到重复的事件,这是有道理的,因为我没有确认已正确处理事件。但是,当我返回200响应时,我就不会收到重复的事件了。
谢谢!