gpt4 book ai didi

c# - 可恢复的Azure Web作业(不要从队列中删除)

转载 作者:行者123 更新时间:2023-12-03 01:10:52 25 4
gpt4 key购买 nike

在 Azure Web 作业中,您可以在连续运行的作业中使用由 Azure 队列触发的函数。

从队列中读取消息后,该消息将被删除。

但是,如果由于某种原因我的作业崩溃(例如虚拟机重新启动),则当前未完成的作业将崩溃,并且我将丢失消息中的信息。

是否可以将 Azure Web 作业配置为不自动从队列中删除消息,并在作业完成时手动执行此操作?

最佳答案

有两种情况:

  1. 函数失败,因为消息错误并且我们无法绑定(bind)它 - 例如,您绑定(bind)到 Person 对象,但消息正文是无效的 JSON。在这种情况下,我们从队列中删除该消息。我们将在未来的版本中提供处理有害消息的机制。 (related question)
  2. 函数失败,因为消息绑定(bind)后引发了异常 - 例如,您自己的代码引发了异常。每当我们从队列中收到消息时(除了情况 #1),我们都会设置一个租约,我认为是 10 分钟:
    • 如果该函数在 10 分钟后仍然运行,我们会续订租约。
    • 如果该函数完成,该消息将被删除。
    • 如果函数因任何原因抛出异常,我们会将消息留在那里,并且不会再次续订租约。租用时间到期(最多 10 分钟)后,该消息将再次显示在队列中。

回答你的问题,如果虚拟机重新启动,你会遇到第 2 种情况,并且该消息最多应该在 10 分钟后再次显示。

关于c# - 可恢复的Azure Web作业(不要从队列中删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23727559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com