首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceBus重试逻辑

ServiceBus重试逻辑
EN

Stack Overflow用户
提问于 2022-02-03 16:20:54
回答 1查看 180关注 0票数 0

https://github.com/Azure/azure-sdk-for-python/issues/6731#issuecomment-1028393257的转发

我正在ServiceBusClient上测试重试参数,不清楚它们是否/如何工作。

我是不是做错了什么,难道我不明白重试是怎么回事吗?在下面,我预计信息将在30秒内传递三次。相反,交付10次,每次大约150毫秒。

代码语言:javascript
复制
with ServiceBusClient.from_connection_string(
    CONNECTION_STRING, retry_total=2, retry_backoff_factor=10
) as client:
    with client.get_subscription_receiver(
        topic_name="test", subscription_name="andrew_test"
    ) as receiver:
        for message in receiver:
            logger.debug(
                f"message {message.sequence_number}, delivery count {message.delivery_count}"
            )
            receiver.abandon_message(message)

运行上述一条消息的结果-

代码语言:javascript
复制
11:08:02.721 DEBUG    message 40719, delivery count 0
11:08:02.875 DEBUG    message 40719, delivery count 1
11:08:03.029 DEBUG    message 40719, delivery count 2
11:08:03.183 DEBUG    message 40719, delivery count 3
11:08:03.339 DEBUG    message 40719, delivery count 4
11:08:03.644 DEBUG    message 40719, delivery count 5
11:08:03.799 DEBUG    message 40719, delivery count 6
11:08:03.955 DEBUG    message 40719, delivery count 7
11:08:04.111 DEBUG    message 40719, delivery count 8
11:08:04.269 DEBUG    message 40719, delivery count 9
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-03 22:13:46

如何解释retry_backoff_factor取决于模式参数。默认情况下,它被设置为“指数”,将retry_mode="fixed"设置为一个常数重试时间。

重试机制一般只适用于SDK中发生的错误,例如连接超时。您可以通过设置retry_total=1, retry_backoff_factor=10, retry_mode="fixed"关闭并启动代码来模拟这种情况--10秒后应该会引发异常。如果您现在将其更改为retry_total=3, retry_backoff_factor=10, retry_mode="fixed",您将在30秒内看到异常,在此时间范围内,客户端已经尝试接收了三次消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70974772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档