我从存储队列中触发了azure函数。该功能的行为是向另一个存储队列中创建大约10,000条附加消息,以供另一个功能(在同一功能应用程序内)执行。每当执行时,我都会看到一些奇怪的行为,第一个函数似乎要执行多次。我通过观察它正在发布的队列接收到的消息比预期的多得多来观察到这一点。
我知道该功能应该经过防御性编码(即希望多次执行),但是每次执行第一个功能时,这种情况就会持续发生。我不认为重复执行是由于超时或失败(根据应用程序见解)。
是否可能是当10,000条消息排队时,该功能正在向外扩展,并且是否导致原始消息多次执行?
答案 0 :(得分:0)
对触发第一个Azure函数执行的原始消息的锁定可能即将到期。这将导致队列假定处理消息失败,然后它将使用该消息触发功能再次执行。在向下一个队列发送10,000条消息时,您需要研究更新消息锁。
此外,由于您要发送10,000条消息,因此您可能需要重新设计该消息,以便更有效地扩展您尝试实现的大规模并行处理。 10,000个消息是从单个触发事件发送的消息的数量非常高。