Azure功能和存储队列

时间:2019-03-26 19:45:44

标签: azure queue azure-storage azure-functions message-queue

我尝试将Azure存储队列与azure函数一起使用,并且我认为它非常简单-从队列中获取消息,进行处理,必要时添加新消息。但是现在我一团糟,在函数处理当前消息时读取了消息(我的过程很长),有时我看到队列中的消息已经很久了。

任何表示Azure功能的方法:

  1. 获取消息并从队列中删除
  2. 正在处理消息
  3. 如果成功-没有任何反应,如果失败(异常)-读取了当前数据。

仅此而已。没有任何复杂的逻辑。有可能吗?

1 个答案:

答案 0 :(得分:1)

基于以上评论

您的功能由服务总线中的消息触发。您处理该消息。如果您满意并在给定的执行时间内完成(默认5分钟),则消息将标记为已完成。如果您不满意,请抛出异常。该功能将认为消息未完成并放弃它,因此它会重新出现在队列中,但是您的重试计数将一直增长,直到达到最大值,然后将消息发送到死信队列。

要注意的点

如果您不引发异常并且进程自己执行(由于某些处理错误),则它仍将其视为已放弃的消息,并将重试。但是,如果函数成功执行而没有引发任何错误,但是结果不是您想要的,则抛出您自己的异常。

在服务总线中,锁定时间也会增加,以匹配功能的处理时间。例如该功能需要5分钟才能完成,但是您在服务总线中的消息锁定时间为30秒,该消息将重新出现在消息队列中,而该函数的其他副本仍在处理中。因此,请增加您认为足以使功能完成该过程的服务总线消息锁定时间。