python - ServiceBus 重试逻辑

标签 python azure azure-servicebus-subscriptions

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

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

我做错了什么吗?我不明白重试是如何工作的吗?在下面,我预计该消息将在 30 秒内传递 3 次。相反,会传送 10 次,每次传送之间的间隔约为 150 毫秒。

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)

针对一条消息运行上述结果 -

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

最佳答案

如何解释retry_backoff_factor取决于retry_mode争论。默认情况下,它设置为“指数”,将 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 秒内看到异常,在该时间范围内客户端已尝试接收消息 3 次。

关于python - ServiceBus 重试逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70974772/

相关文章:

python - 从存储在数组中的波形播放声音

azure : Permission for Service Principal to get list of Service Principals

azure - Microsoft Azure 中的异步任务

c# - 查看没有事件消息的 session 启用主题/订阅时出现超时异常

python wnck 在 pdb.set_trace() 之前不返回任何数据

Python tarfile 比 Linux 命令慢

python - 使用VerbNet、NLTK解析动词

c# - Cosmosdb : "message" :"Syntax error, invalid numeric value token ' 4d5f'.“错误

azure - Azure 服务总线中 SQL 筛选器和相关筛选器的主要区别是什么

c# - 获取 Azure 服务总线中的消息统计信息