当我们禁用函数 运行 时,在函数 运行 上处理的消息会发生什么情况?
What happens to the messages being processed on functions running when we disable the function?
我们正在使用 Azure 函数,这些函数在服务总线队列中的每条消息上触发。我们正在尝试解决一个问题,我们需要动态地禁用功能应用程序处理消息的功能,以便它不会进一步处理消息,并且我们也不会在此过程中丢失任何消息。
我们可以通过多种方式禁用功能,参考link,但问题依旧。 无法弄清楚当尝试禁用相同功能时已经产生的功能会发生什么。
由于函数是服务总线触发的,所以函数总是有可能正在处理一条消息,而我们禁用了它,它是否得到处理,是否引发任何类型的取消,它只是因异常而消失?
如果有人可以指导我查看一些文档或其他内容,那就太好了。谢谢
Azure 服务总线触发函数将锁定正在处理的消息。如果 Function 终止并且消息未完成或处置,锁将过期并且消息将重新出现在队列中。那是因为函数运行时 receives a message in PeekLock
mode.
要考虑的一个因素是队列的 MaxDeliveryCount
。如果函数在最后一次处理尝试时终止,则消息将成为死信,因为所有处理尝试都已用尽。这是标准的 Azure 服务总线行为。
我们正在使用 Azure 函数,这些函数在服务总线队列中的每条消息上触发。我们正在尝试解决一个问题,我们需要动态地禁用功能应用程序处理消息的功能,以便它不会进一步处理消息,并且我们也不会在此过程中丢失任何消息。
我们可以通过多种方式禁用功能,参考link,但问题依旧。 无法弄清楚当尝试禁用相同功能时已经产生的功能会发生什么。
由于函数是服务总线触发的,所以函数总是有可能正在处理一条消息,而我们禁用了它,它是否得到处理,是否引发任何类型的取消,它只是因异常而消失?
如果有人可以指导我查看一些文档或其他内容,那就太好了。谢谢
Azure 服务总线触发函数将锁定正在处理的消息。如果 Function 终止并且消息未完成或处置,锁将过期并且消息将重新出现在队列中。那是因为函数运行时 receives a message in PeekLock
mode.
要考虑的一个因素是队列的 MaxDeliveryCount
。如果函数在最后一次处理尝试时终止,则消息将成为死信,因为所有处理尝试都已用尽。这是标准的 Azure 服务总线行为。