作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想限制 Azure ServiceBus 队列接收器中的重试次数。
使用带有 MaxRetryCount:3 的控制台应用程序发送消息
private static async Task MainAsync()
{
string connectionString = ConfigurationManager.AppSettings["ServiceBusConnection"];
QueueClient queueClient = QueueClient.CreateFromConnectionString(connectionString, QueueName);
queueClient.RetryPolicy = new RetryExponential(
minBackoff: TimeSpan.FromSeconds(0),
maxBackoff: TimeSpan.FromSeconds(30),
maxRetryCount: 3);
string tradeData = File.ReadAllText("TradeSchemaDemo.json");
var message = new BrokeredMessage(tradeData);
await queueClient.SendAsync(message);
await queueClient.CloseAsync();
}
另一边我有Azure功能来接收消息,
public static void run([ServiceBusTrigger("TestQueue", AccessRights.Manage, Connection = "servicebusconnection")]string myqueueitem, TraceWriter log)
{
retry++;
System.Console.WriteLine($"Retry attempt {retry}");
throw new System.Exception("Human error");
log.Info($"c# servicebus queue trigger function processed message: {myqueueitem}");
}
不过,我的函数调用了 10 次。为什么??
最佳答案
在这种情况下,RetryPolicy
定义发送操作的重试次数,而不是接收端。
接收方重试次数由队列属性最大传递计数
定义。您可以使用 Service Bus Explorer 等工具在队列级别进行设置,或者在创建队列时以编程方式进行设置:
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
var queue = new QueueDescription(queueName);
queue.MaxDeliveryCount = 3;
if (!namespaceManager.QueueExists(queueName))
namespaceManager.CreateQueue(queue);
关于azure - ServiceBus 重试策略不适用于 QueueClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50754805/
我是一名优秀的程序员,十分优秀!