我有一个控制台应用程序,可以将大量消息并行推送到 Azure 存储队列。有一个连续触发的 Azure WebJob,每当消息添加到该队列时就会调用。在其中一个场景中,我向队列添加了 300 个项目,三个不同线程中各添加 100 个项目。由于队列中只有 300 条消息,因此理想情况下 WebJob 应该仅被调用 300 次。但我可以看到它已经调用了 308 次。可能是什么原因? 另请注意,额外的触发计数是不可预测的。有时可能是 306 或 310 等。
我尝试通过删除 Parallel.Invoke 来顺序发布消息,以检查其是否与并行处理相关,但问题仍然存在。我正在通过在本地运行 WebJob 项目来调试该问题。
最佳答案
部分消息处理过程中可能出现异常。如果消息未能成功处理,则会重试。每条消息都有一个 dequeueCount。如果内存充足,队列触发器的默认尝试次数是五次。
尝试在本地运行并观察输出窗口。或者,您可以检查实时 Azure 实例上的 Web 作业日志,以查看是否重试了消息。
关于具有队列触发的 Azure WebJob 多次触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52258713/