WebJob 控制台应用程序中的 ProcessQueueMessage 函数

ProcessQueueMessage function in WebJob console app

我正在创建一个新的控制台应用程序,我将 运行 作为 Azure 上的 WebJob。当我在 Visual Studio 中创建新应用程序时,它已经创建了一个 Function.cs class,其中包含以下方法,该方法会自动从我的队列中获取消息并进行处理。

public static void ProcessQueueMessage([QueueTrigger("queue")] string message, TextWriter log)
{
   log.WriteLine(message);
}

我的问题是如何更好地控制队列消息的处理。例如,我想确保消息已被处理和删除。这种方法似乎为我做了所有这些,但我怎么知道消息是否被正确处理了呢?如果失败了,如何让它不删除消息呢?

是的,所有这些都为您处理。仅当您的函数成功完成时才会删除队列消息。在那之前,当您的函数是 运行 时,队列消息将保持不可见状态,因此没有其他人会拾取它进行处理。如果您的功能失败,该消息将在短时间内变为可见,以便对其进行处理。如果队列消息处理失败的次数达到可配置的次数(默认为 5),则消息将移至 poison queue.

如果您有高级要求并且需要深入插入 SDK 队列处理管道,您可以实施和注册您自己的自定义 QueueProcessor 实例到 override/customize 消息处理的各个部分。有关详细信息,请参阅 this sample