。NET Core 2.2,WebJobs SDK 3.0
我有一个网络作业,它从队列中接收消息。像这样的标准QueueTrigger
public void ProcessQueueMessage(
[QueueTrigger("%WebJobs:WorkerQueueName%")] CloudQueueMessage queueMessage,
ILogger log)
在过程结束时,我将消息写入另一个队列(存档)。
该函数成功完成,但是消息保留在源队列中
在Storage Explorer中,我看到了这个(在此示例中,我有3条待处理的消息)
消息在10分钟后再次出队。
如何使它成功运行,以便使消息出队?
顺便说一下,我的队列配置是
BatchSize 1
MaxDequeueCount 2
MaxPollingInterval 00:00:04
VisibilityTimeout 02:00:00
默认情况下,该消息将被租用(或变得不可见)30秒。如果作业花费的时间长于该时间,则该租约将被续签。除非主机崩溃或该函数引发异常,否则该消息对其他函数实例将不可用。功能成功完成后,SDK将删除该消息。
当从队列中检索到一条消息时,响应包括该消息和一个弹出收据值,这是删除该消息所必需的。在visibilitytimeout
参数指定的时间间隔内,消息不会自动从队列中删除,但是在检索之后,其他客户端看不到它]。检索消息的客户端应在处理完消息之后,然后在响应的
TimeNextVisible
元素指定的时间之前删除该消息,该时间是根据visibilitytimeout
参数的值计算的。将visibilitytimeout
的值添加到检索消息的时间,以确定TimeNextVisible
的值。