Azure WebJob QueueTrigger获取后如何删除DeleteMessage?

时间:2015-06-18 18:26:20

标签: c# azure-webjobs azure-queues

我在azure上有一个webjob,带有QueueTrigger。工作很长(超过30分钟)

public async static Task ProcessQueueMessageAsync([QueueTrigger(QUEUENAME)] string iJobId)
{
//doing my long job
}

我的问题是如何在触发后删除队列中的消息。消息变为不可见,直到时间跨度(默认为30秒)到来。我的工作时间少得多。所以我想我必须在触发器方法的开头删除消息。 我在使用GetMessage()方法循环而不是触发时找到了如何执行此操作。但是如何使用触发器执行此操作,因为我没有运行.DeleteMessage()的消息对象?

1 个答案:

答案 0 :(得分:5)

Answered by Michael Curd on the MSDN Forums,并在此引用:

  

SDK应该已经处理过了。如您所述,默认情况下,邮件将被租用(或变为不可见)30秒。如果工作时间比这长,那么租约将会续订。除非主机崩溃或函数抛出异常,否则该消息将不会对该函数的另一个实例可用。功能成功完成后,SDK将删除该消息。因此,您不需要为此方案编写任何特殊代码。