GUI*_*_33 5 azure azure-queues azure-storage-queues
如果我使用Azure.Storage.Queue从队列中获取消息
queue.GetMessage(TimeSpan.FromMinutes(20));
Run Code Online (Sandbox Code Playgroud)
我可以设置可见性超时,但是当尝试使用Azure.WebJobs(SDK 0.4.0-beta)属性将webjob自动绑定到队列时
即
public static void ProcessQueueMessage([QueueTrigger("myqueue")] string message){
//do something with queue item
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在属性上设置可见性超时?在JobHostConfiguration()中似乎没有选项.队列.如果无法覆盖,那么它是标准的30秒吗?
小智 5
我有同样的问题,还没有找到答案。但是,为了回答您的部分问题,默认租期为 10 分钟。
引用Azure网站:“当方法完成时,队列消息被删除。如果方法在完成之前失败,则队列消息不会被删除;10分钟的租约到期后,消息被释放以再次拾取并处理。如果消息总是导致异常,则此序列不会无限重复。在尝试处理消息 5 次失败后,该消息将移动到名为 {queuename}-poison 的队列中。最大尝试次数是可配置的。”
链接:http ://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-get-started/ 部分:ContosoAdsWebJob - Functions.cs - GenerateThumbnail 方法
希望这可以帮助!
在最新的v1.1.0版本中,您现在可以通过JobHostConfiguration.Queues.QueueProcessorFactory注册自己的自定义QueueProcessor实例来控制可见性超时.这允许您全局或按队列/功能控制高级消息处理行为.
例如,要设置失败消息的可见性,可以按如下方式覆盖ReleaseMessageAsync:
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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2507 次 |
最近记录: |