批处理或取消处理Azure服务队列

时间:2018-10-01 20:14:44

标签: c# azure azureservicebus servicebus

如何在不增加传递计数的情况下使用DotNet SDK取消处理或处理Azure Service Bus队列的指定数量的队列消息?传递数量增加会导致邮件陷入死信

these directions之后使用QueueClient而不是SubscriptionClient,我能够编写两个控制台应用程序,即Service Bus Queues的发送者和接收者。如果我要批量处理队列中的内容(例如,每分钟我要处理100个队列项或每分钟请求100个队列项),在调用RegisterMessageHandler(event,cancelleToken)之后,如何优雅地取消正在发生的处理? / p>


//throws System.OperationCanceledException exception so the DeliveryCount goes up
await queueClient.CloseAsync(); 
//throws Microsoft.Azure.ServiceBus.MessageNotFoundException exception so DeliveryCount also goes up 
await queueClient.CancelScheduledMessageAsync(message.SystemProperties.SequenceNumber); 

我尝试遵循prefetch best practices,但这似乎只是它请求的数量而不是总批次的“缓冲区”。

1 个答案:

答案 0 :(得分:0)

$(function(){ 'use strict'; var $page = $('#main'), options = { debug: true, prefetch: true, cacheLength: 0, onStart: { duration: 250, // Duration of our animation render: function ($container) { // Add your CSS animation reversing class $container.addClass('is-exiting'); // Restart your animation smoothState.restartCSSAnimations(); } }, onStart: { duration: 0, render: function ($container, $newContent) { // Remove your CSS animation reversing class $container.removeClass('is-exiting'); // Inject the new content $container.html($newContent); } } }, smoothState = $page.smoothState(options).data('smoothState'); }); 是错误的API,因为它没有取消处理。

当客户端检索邮件时,发送计数将始终增加。无论消息是否已成功处理或处理被取消。唯一不会增加传递计数的操作是领料,但是您无法锁定邮件进行处理。

我建议您看一下如何配置CancelScheduledMessageAsync()来适应可以取消的处理。