【问题标题】:Get Oldest Message in the Azure Service Bus Subscription?在 Azure 服务总线订阅中获取最旧的消息?
【发布时间】:2020-03-28 08:01:54
【问题描述】:

有没有一种方法可以在不遍历所有消息并使用 getEnqueuedTimeUTC 的情况下获取订阅中最旧的排队消息?这种方法的问题是,如果您没有完成消息,相同的消息将在队列顶部弹出。基本上我会陷入无限循环。

如何找到订阅中最旧的消息?

【问题讨论】:

    标签: azureservicebus


    【解决方案1】:

    第一个排队的消息将是第一个可用于处理的消息(假设它没有被安排)。使用队列或订阅客户端的PeekAsync() 方法查看队列将为您提供该消息的信息,包括入队时间。

    【讨论】:

    • 亲爱的@SeanFeldman,队列中 FIFO 的旧概念发生了什么变化?如果我的应用程序开始使用 PEEK 模式读取消息(或 RECEIVEANDELETE 无关紧要),我的应用程序收到的第一条消息应该是最旧的消息(排队的第一条消息)。不是吗?
    • 我没有关注。队列总是先进先出的。如果您没有在MacxLockDuration 时间内完成消息,则该消息将再次可用,并将立即由另一个计算消费者处理。消息将不会返回到队列的末尾。我理解您的问题和问题的方式是您希望确保必须在之前处理第一条消息,然后再处理任何后续消息。 IE。您正在寻找订单吗?如果这就是您所追求的,那么您可以使用消息会话功能来确保订单。但是接收器无法横向扩展。
    • 我知道另一个侦听器可能持有最旧的消息,如果处理失败,同一条消息可能会放回活动队列中,并增加传递计数。
    • 我只想获取消息排队时间。我不想在 at 处理它们。这个想法是在不处理消息的情况下找到队列中最旧的消息。无操作。那么,根据 FIFO 逻辑,到达我的应用程序的第一条消息是队列中最旧的(并且未处理且没有其他侦听器持有此消息的锁)消息?
    • 第一个到达的消息将是第一个被处理的消息(假设它没有被安排)。查看队列将为您提供您正在寻找的消息信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2019-02-17
    • 2020-07-06
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多