https://github.com/Azure/azure-sdk-for-python/issues/6731#issuecomment-1028393257的转发
我正在ServiceBusClient上测试重试参数,不清楚它们是否/如何工作。
我是不是做错了什么,难道我不明白重试是怎么回事吗?在下面,我预计信息将在30秒内传递三次。相反,交付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发布于 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秒内看到异常,在此时间范围内,客户端已经尝试接收了三次消息。
https://stackoverflow.com/questions/70974772
复制相似问题