【问题标题】:How can Azure Service Bus client-side batching guarantee messages aren't lost?Azure 服务总线客户端批处理如何保证消息不丢失?
【发布时间】:2020-12-18 11:25:43
【问题描述】:

Azure 服务总线具有“客户端批处理”功能(由 AMQP 和 SBMP 协议实现)。 I am reading 文档对此有何评论。它提出了一个相当大胆的主张:(强调我的)

批处理不会丢失消息,即使在 20 毫秒批处理间隔结束时出现服务总线故障。

这怎么可能是真的?如果消息是同步发送的,我就知道“send”方法返回后,消息已经在总线上了,我就不用再担心了。但是如果客户端批处理的目的是在方法返回后延迟发送消息 20ms,以便随后对该方法的调用可以将消息添加到同一个批处理中,那么,至少在我看来,肯定有 必须有可能在这 20 毫秒内发生一些不好的事情并且整个批次都将丢失。

我能想到的唯一可能的解决方法是,如果批处理发生在服务器上,但该功能不会被称为客户端-side batching。

这个说法是真的吗?我是否误解了这句话,或者客户端批处理的目的是什么?还是微软的聪明人想出了我没想到的技术解决方案?

【问题讨论】:

  • 这似乎不是 SO 社区可以解决的问题,我已重新开始联系 Azure 支持团队。
  • 我其实有一个理论,我认为最有可能的解释是任务只会在批量发送时完成,但并发任务可能会被批量处理。这使得将诸如 Task.WhenAll 之类的技术用于 ASB 操作变得更加重要。我可以通过实验确认它,但我需要花一点时间。

标签: azure azureservicebus amqp


【解决方案1】:

您所指的注释在Batching store access 下,它是在讨论服务端的批处理,而不是客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多