为何Microsoft Graph API webhook框架发送通知存在不一致问题
Outlook Webhook通知漏发问题排查
我目前可以接收并处理通知,但该机制极其不可靠。举个实例:假设我将Outlook已删除文件夹中的10封邮件移动到收件箱,我订阅了删除和创建两类更新,按预期应该收到20条通知,但实际只会收到18到20条不等,仿佛全看*“运气”*,因此会出现webhook完全未推送通知的邮件遗漏情况。
为了补救该问题,我配置了针对遗漏通知的Lifecycle webhook,但它只会在有消息未推送时偶尔触发,唯一的解决方案只能是执行全量同步,这完全违背了使用webhook的初衷。
我已经完成的排查操作如下:
- 通过App Insights和应用日志确认通知没有被送达
- 配置了Lifecycle webhook辅助识别问题
- 配置了可用的限流机制和自动续订订阅功能
目前我倾向于认为该框架没有按照预期工作,也欢迎大家指出我存在的问题。
提前感谢大家的协助。
补充(回调函数未被触发)
[FunctionName("MessageNotificationHook")] public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "delete", "post", "put", "patch", Route = null)] HttpRequest req, [Queue(Routes.CommandQueue), StorageAccount("AzureWebJobsStorage")] ICollector<ImportMailMessageCommand> queueOutput, [Queue(Routes.CommandQueueDev), StorageAccount("AzureWebJobsStorage")] ICollector<ImportMailMessageCommand> queueOutputDev) { var validationToken = req.Query["validationToken"]; if (!string.IsNullOrEmpty(validationToken)) { logger.LogInformation($"[{LOGGING_TAG}] {validationToken}"); return new ContentResult { Content = validationToken, ContentType = "text/plain" }; } logger.LogInformation($"[{LOGGING_TAG}] called."); // _ = Task.Run(() => ProcessNotification(queueOutput, queueOutputDev, req)); return new AcceptedResult(); }
内容的提问来源于stack exchange,提问作者kvn73
相关产品推荐
相关产品推荐

