Skip to main content
 首页 » 编程设计

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

2024年05月10日45kevingrace

我正在创建一个新的控制台应用程序,我将在 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了解更多详情。