700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Azure Functions Service Bus Trigger

Azure Functions Service Bus Trigger

时间:2023-02-12 16:38:43

相关推荐

Azure Functions Service Bus Trigger

Azure Functions 的 service bus trigger 默认采用的是peeklock模式,该模式下,如果functions收到消息后,整个functions执行成功,则functions框架会在function成功后,将service bus的消息标定为 complete,如果functions执行时失败,则标定为 abandon, 如果functions的运行时间长于peeklock超时时间,如果functions还在执行,则会自动续订lock。

关于 message lock duration和 Max delivery count的信息,可以在代码执行时通过日志查看:

namespace Company.Function{public class ServiceBusTopicTrigger1{private readonly ILogger<ServiceBusTopicTrigger1> _logger;public ServiceBusTopicTrigger1(ILogger<ServiceBusTopicTrigger1> log){_logger = log;}[FunctionName("ServiceBusTopicTrigger1")]public void Run([ServiceBusTrigger("topic-01", "sub-01", Connection = "demofunctions_SERVICEBUS")]string mySbMsg, Int32 deliveryCount){_logger.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");_logger.LogInformation($"DeliveryCount={deliveryCount}");Thread.Sleep(40000);}}}

假定 message Lock duration设定为10,Max delivery Count设定为1:

如果Functions 收到一条消息,将消息锁定10秒,且Functions 需要50秒才可以执行完成,则如果Function还在执行,则锁会自动续订。

如果Functions收到一条消息,将消息锁定10秒,此时Functions异常退出了,则消息将在锁定期10秒后进入死信队列。

假定 message Lock duration设定为10,Max delivery Count设定为10:

如果Functions收到一条消息,将消息锁定10秒,此时Functions异常退出了,则消息将在锁定期10秒后会重新进入队列供订阅者消费,此时Functions如果再次运行,则可以收到 develivery count =2 的消息,则消息会被第二次执行消费。如果第二次消费Functions不出错,则消息从队列中移除,如果还出错,则消息会继续被放回队列,再执行第三次,直到 某次执行成功,则消息被消费掉。如果到第10次还是执行失败,则丢入死信队列。

Azure Functions中的 peeklock模式遵照如下规定(C#和Python语言修改位置不同,Python修改functions.json):

AutoComplete属性对peeklock的影响,参见官网:Azure Functions 的 Azure 服务总线触发器 | Microsoft Docs

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。