【问题标题】:Picking only the latest messages in azure service bus queues based on the multiple messages with same message id根据具有相同消息 ID 的多条消息,仅选择 azure 服务总线队列中的最新消息
【发布时间】:2017-10-19 21:46:01
【问题描述】:

我们正在处理这样一个场景,即用户请求生成一些文档(通过 Web 应用程序)并且这些请求(一条消息)被发送到 Azure 服务总线队列,处理后将生成一个文档。用户可以使对具有更新数据的同一文档的多个请求(这是消息的一部分)。我们需要的是,如果用户针对同一文档有最新消息,我们将使用该消息来生成文档,并且可以忽略其他较旧的消息。可以使用可能是消息 ID 的唯一标识符来识别用户请求。 目前在 azure 服务总线队列中是否有办法实现这一点。 在我看来,这与队列中的重复检测完全相反。

【问题讨论】:

    标签: azure azureservicebus


    【解决方案1】:

    从技术上讲,您可以使用 Peek / PeekBatch 方法读取整个队列(在每次接收文档请求消息时),如果检测到具有相同请求/文档的较新消息,则跳过较旧的(当前)消息。但是,根据队列中的平均消息数量,这可能非常低效。以我的经验,PeekBatch 有点快(几秒钟,数百条消息最多几十秒) - 但一次又一次地扫描整个队列感觉不对。或者,如果可以,而不是立即处理文档请求。将请求保留在 ASB 之外的其他外部位置。然后定期扫描那个表,只执行最新的一个,然后清除其余的。

    【讨论】:

    • 谢谢。我们已经按照您的建议进行表扫描,但我想看看是否有其他有效的方法来做到这一点
    猜你喜欢
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2014-11-03
    • 2017-11-01
    • 1970-01-01
    相关资源
    最近更新 更多