【发布时间】: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