我正在创建一个新的控制台应用程序,我将在 Azure 上将其作为 WebJob 运行。当我在 Visual Studio 中创建新应用时,它已经创建了一个包含以下方法的 Function.cs 类,该方法自动从我的队列中获取消息并进行处理。
public static void ProcessQueueMessage([QueueTrigger("queue")] string message, TextWriter log)
{
log.WriteLine(message);
}
我的问题是如何更好地控制队列消息的处理。例如,我想确保消息已被处理和删除。这种方法似乎为我做了所有这些,但我怎么知道消息是否被正确处理了呢?如果失败了怎么办,我怎么告诉它不要删除消息?
请您参考如下方法:
是的,所有这些都为您处理。仅当您的函数成功完成时才会删除队列消息。在此之前,当您的函数正在运行时,队列消息将保持不可见状态,因此没有其他人会拾取它进行处理。如果您的功能失败,该消息将在短时间内变为可见,以便对其进行处理。如果队列消息处理失败的次数达到可配置的次数(默认为 5 次),则消息将移至 poison queue。 .
如果您有高级要求并且需要深入插入 SDK 队列处理管道,您可以实现并注册您自己的自定义 QueueProcessor 实例以覆盖/自定义消息处理的各个部分。参见 this sample了解更多详情。
