gpt4 book ai didi

azure - Dapr 重试的指数退避 (AzureServiceBus)

转载 作者:行者123 更新时间:2023-12-03 06:23:36 25 4
gpt4 key购买 nike

当前部署到 Azure 容器应用的服务,它们通过 Azure 服务总线进行通信

在通信过程中,服务将发送 4000 条消息,由于数据库与数据库的最大连接数(200),某些消息会抛出错误,因此必须重试消息,但问题是,在消息发送之前没有退避时间消息会被重试,因此大多数消息在达到 maxDeliveryCount 后最终会进入死信队列。

Dapr 组件规范上是否有像 backOffInitialInterval 这样的元数据字段来设置重新发送消息之前等待的时间?

下面是我的二头肌文件

resource daprComponent 'daprComponents@2022-03-01' = {
name: 'ifms-dapr-pubsub'
properties: {
componentType: 'pubsub.azure.servicebus'
version: 'v1'
secrets: [
{
name: 'service-bus-connection-string'
value: 'Endpoint=sb://${serviceBusName}.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=${listKeys('${serviceBusId}/AuthorizationRules/RootManageSharedAccessKey', serviceBusApiVersion).primaryKey}'
}
]
metadata: [
{
name: 'connectionString'
secretRef: 'service-bus-connection-string'
}
{
name: 'maxDeliveryCount'
value: '1000'
}
]
}
}

来自 link客户端库的 ServiceBusRetryOptions 中有一个 ModeDelay

最佳答案

要设置重试策略的初始退避间隔,您可以将 metadata 字段添加到您的 daprComponent 资源,名称为 retryOptions 以及包含模式和延迟属性的值。

例如,您可以设置回退重试策略,以指数方式扩展延迟,从 5 秒的值开始,如下所示:

metadata: [
{
name: 'connectionString',
secretRef: 'service-bus-connection-string',
},
{
name: 'maxDeliveryCount',
value: '1000',
},
{
name: 'retryOptions',
value: json({
mode: 'exponential',
delay: '00:00:05',
}),
},
],

关于azure - Dapr 重试的指数退避 (AzureServiceBus),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75716321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com