发布到 Azure EventGrid 实例的某些消息会导致413 Payload Too Large 错误。 文档对此非常清楚:
将事件发布到事件网格主题时,数组的总大小最多可达 1 MB。数组中的每个事件限制为 64 KB。如果事件或数组大于大小限制,您将收到响应 413 Payload Too Large。
不幸的是,我遇到这个问题为时已晚,直到我在生产中遇到错误时才意识到这个事件大小限制。减小主体尺寸是可行的方法,因为我知道消息的占用空间应该很小。大多数都是这样。但对于少数失败的消息,需要进行大量的管道和架构更改。
在此之前,Azure EventGrid 中是否有办法合理增加 64kb 限制(例如增加到 128kb),尽管需要设置、更高的计划或解决方法?直到可以通过代码更改正确覆盖这一点。
1MB 限制是硬限制。你无法改变这一点。您可以使用声明检查模式将事件数据卸载到存储并在收到消息时读取它。
我同意 Sean 关于使用 ClaimCheck 模式的观点。我在大型 EDA 领域工作了 20 年,并且一直强调需要保持事件消息小而灵活(无论技术平台如何)。我认为在事件有效负载中携带指向 blob 的指针(例如)仍然是很好的做法。不过,我很想了解为什么 MS 决定将其限制提高到 1MB。当架构师试图说服其他人相信“小而灵活的事件”原则时,这只会让架构师的工作变得更加困难。