如何在不增加传递计数的情况下使用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,但这似乎只是它请求的数量而不是总批次的“缓冲区”。
答案 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()
来适应可以取消的处理。