【问题标题】:Azure - ServiceBus: EnqueueTimeUtc is not accurateAzure - 服务总线:EnqueuedTimeUtc 不准确
【发布时间】:2020-08-03 09:39:38
【问题描述】:

我注意到消息的 EnqueueTimeUtc 值不准确

我正在为我的系统使用 ServiceBus 主题和订阅者

Sender 端使用“Microsoft.Azure.ServiceBus”Version="4.1.1" NuGet 包在 .NET 中编写 使用 SendAsync() 方法向主题发送消息

订阅者端是使用 azure.servicebus.control_client 用 Python 编写的(azure-servicebus 版本 0.50.3) 使用peek_lock=True的receive_subscription_message()方法接收消息

当我在订阅者端收到消息时,我从收到的消息中导出了“EnqueuedTimeUtc”属性,其值为“Tue, 21 Jul 2020 08:41:37 GMT”。 但是,我注意到时间不准确(比当前时间晚了约 7 秒) 在发送方,我在发送消息后添加了一个日志,日志的时间戳为 '7/21/2020 08:41:29.5047754'

发送者和订阅者都在我的本地计算机上运行,​​ServiceBus 位置是“美国西部”

我错过了什么吗?

【问题讨论】:

    标签: azureservicebus servicebus azure-servicebus-topics azure-servicebus-subscriptions


    【解决方案1】:

    这里可能缺少的一个微妙之处是 EnqueuedTimeUTC 是由服务设置的,而不是发送者。因此,发送者和接收者的时钟都可能是不同的(两者都来自服务,如果它们在不同的机器上,则彼此不同),因此我不会惊讶地观察到您已经注意到的有限偏差。

    完全披露,我是 Python SB SDK 的维护者之一,如果需要更多说明或我遗漏了什么,请随时告诉我;我希望这对您有所帮助!

    【讨论】:

    • 我会更详细地解释我的问题。我尝试测量从服务总线主题中出列消息需要多长时间。订阅者代码是用 Python 编写的,我使用带有 peek_lock=True 的 receive_subscription_message() 方法来接收消息。 receive_subscription_message() 方法等待 X 秒来接收新消息,并在主题中出现消息时将其出列。由于receive_subscription_message() 方法等待新消息出现在主题中,所以我真的不知道仅出列消息需要多长时间
    • 从根本上说,正如我之前试图指出的那样,您不知道您自己和数据中心时钟之间的时钟偏差,它设置了 EnqueuedTimeUTC。通过补充您之前提到的日志,您可能会得出发送和接收延迟的一阶近似值,但这只是尽力而为。
    • 感谢您的回答。我会想另一种方法来解决我的问题
    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 2022-01-09
    • 2021-12-30
    相关资源
    最近更新 更多