我尝试将Azure存储队列与azure函数一起使用,并且我认为它非常简单-从队列中获取消息,进行处理,必要时添加新消息。但是现在我一团糟,在函数处理当前消息时读取了消息(我的过程很长),有时我看到队列中的消息已经很久了。
任何表示Azure功能的方法:
仅此而已。没有任何复杂的逻辑。有可能吗?
答案 0 :(得分:1)
基于以上评论
您的功能由服务总线中的消息触发。您处理该消息。如果您满意并在给定的执行时间内完成(默认5分钟),则消息将标记为已完成。如果您不满意,请抛出异常。该功能将认为消息未完成并放弃它,因此它会重新出现在队列中,但是您的重试计数将一直增长,直到达到最大值,然后将消息发送到死信队列。
要注意的点
如果您不引发异常并且进程自己执行(由于某些处理错误),则它仍将其视为已放弃的消息,并将重试。但是,如果函数成功执行而没有引发任何错误,但是结果不是您想要的,则抛出您自己的异常。
在服务总线中,锁定时间也会增加,以匹配功能的处理时间。例如该功能需要5分钟才能完成,但是您在服务总线中的消息锁定时间为30秒,该消息将重新出现在消息队列中,而该函数的其他副本仍在处理中。因此,请增加您认为足以使功能完成该过程的服务总线消息锁定时间。