首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QueueTrigger属性可见性超时

QueueTrigger属性可见性超时
EN

Stack Overflow用户
提问于 2014-11-14 19:51:09
回答 2查看 3.3K关注 0票数 6

如果我要使用Azure.Storage.Queue从队列中获取消息

代码语言:javascript
复制
queue.GetMessage(TimeSpan.FromMinutes(20));

我可以设置可见性超时,但是当我尝试使用Azure.WebJobs (SDK0.4.0-beta)属性自动将一个set作业绑定到一个队列时

代码语言:javascript
复制
public static void ProcessQueueMessage([QueueTrigger("myqueue")] string message){
       //do something with queue item
}

有办法在属性上设置可见性超时吗?在JobHostConfiguration().Queues中似乎没有选项。如果没有办法覆盖,那么这是标准的30秒吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-04 17:09:04

在最新的v1.1.0版本中,您现在可以通过通过QueueProcessor注册自己的自定义JobHostConfiguration.Queues.QueueProcessorFactory.实例来控制可见性超时这允许您在全局或每个队列/函数中控制高级消息处理行为。

例如,要设置失败消息的可见性,可以重写ReleaseMessageAsync,如下所示:

代码语言:javascript
复制
protected override async Task ReleaseMessageAsync(CloudQueueMessage message, FunctionResult result, TimeSpan visibilityTimeout, CancellationToken cancellationToken)
{
    // demonstrates how visibility timeout for failed messages can be customized
    // the logic here could implement exponential backoff, etc.
    visibilityTimeout = TimeSpan.FromSeconds(message.DequeueCount);

    await base.ReleaseMessageAsync(message, result, visibilityTimeout, cancellationToken);
}

更多细节可以在发布说明在这里中找到。

票数 5
EN

Stack Overflow用户

发布于 2014-12-04 13:45:44

我也有同样的问题,还没有找到答案。但是,要回答你问题的一部分,默认的租约是10分钟。

引用Azure网站的话:“当方法完成时,队列消息将被删除。如果方法在完成之前失败,队列消息就不会被删除;在10分钟的租约到期后,消息将被释放出来,然后再进行处理。如果消息总是导致异常,则不会无限期地重复此序列。在5次试图处理消息失败后,该消息将被移动到一个名为{queuename}-poison的队列中。最大尝试次数是可配置的。”

链接:http://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-get-started/部分: ContosoAdsWebJob - Functions.cs - GenerateThumbnail方法

希望这能有所帮助!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26937782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档