Azure队列-作业时间过长或执行作业异常时重新出现消息

时间:2018-12-26 06:36:39

标签: azure azure-storage azure-webjobs

我有一个由队列消息触发的网络作业。如果作业时间太长,则该消息会重新出现在队列中,并使用相同的消息触发新的Web作业实例。那不应该是。

一旦该消息触发了作业,我们希望将该消息从消息队列中删除。

我们已经设置MaxDequeueCount = 1,以为它将尝试处理一次消息,然后将消息移至Poison Queue。但是MaxDequeueCount对我们不起作用。在我们的工作中,我们使用的是Microsoft.WindowsAzure.Storage的8.7.0.0版本。

请帮助!

JobHostConfiguration config = new JobHostConfiguration();
config.NameResolver = new QueueNameResolver();
config.Queues.BatchSize = Convert.ToInt32(ConfigurationManager.AppSettings["BatchSize"]);
config.Queues.MaxDequeueCount = Convert.ToInt32(ConfigurationManager.AppSettings["MaxDequeueCount"]);
var host = new JobHost(config);
host.RunAndBlock();

2 个答案:

答案 0 :(得分:0)

我认为您正在达到消息租用超时。您应该可以使用UpdateMessage来延长租约(根据this capabilities comparison可以将租约延长到7天)。

希望有帮助!

答案 1 :(得分:0)

2.1.0-beta1起应该固定。但是,目前没有2.1.0的发行版本。包含此修复程序的最新版本是2.1.0-beta4

您可以安装预发行版/测试版(如果需要)来解决此问题。在生产环境中,我无法选择安装Beta版,因此您可以安装Microsoft.Azure.WebJobs 2.1.0进行尝试。

有关更多详细信息,您可以参考此issue和此one