加载中...
声明检查是一种消息传递模式:把大体积的负载存入外部存储,只在消息中携带一个引用(声明凭据),接收方凭该引用去取回完整数据。它避免了在消息系统中传输大对象,减轻消息中间件的负担。

| 中文名 | 声明检查模式 |
| 外文名 | Claim Check |
| 别名 | 行李寄存模式 |
| 类别 | 消息集成模式 |
| 核心思想 | 传引用而非传负载 |
| 典型搭配 | 对象存储、消息队列 |
声明检查模式(Claim Check Pattern)是一种消息集成模式,其做法是把消息中体积庞大的实际负载存储到外部数据存储中,而在消息本身只放入一个用于取回该负载的引用(即声明凭据),消费者收到消息后凭这个引用去外部存储读取完整数据。
该模式的名称来自机场行李寄存:旅客把大件行李交给寄存处,换回一张凭据(claim check),之后凭凭据取回行李。对应到系统中,大文件、图片、视频或大 JSON 被存入对象存储或数据库,消息队列中只流转一个键或 URL。这样既绕开了多数消息中间件对消息大小的限制,又降低了序列化、网络传输和中间件存储的压力,使消息保持轻量。
声明检查适用于需要通过消息系统传递大对象的场景,如图像视频处理流水线、文档批处理、物联网上报大块采样数据,以及任何负载超过消息大小上限的情形。它常与事件驱动架构、发布订阅、队列处理结合使用,也能在敏感数据不宜进入消息日志时,把数据留在受控存储而只传引用以增强安全与合规。
问:声明检查会不会引入额外延迟?答:会增加一次外部存储的读写往返,但换来消息轻量、中间件压力下降和吞吐提升,对大负载而言整体通常更划算。
问:如何避免存储里堆积无用负载?答:应为外部存储的对象设置生存期或在消费成功后主动删除,并对消费失败的情形保留可追溯的清理与重试机制,防止孤儿数据堆积。

| 中文名 | 声明检查模式 |
| 外文名 | Claim Check |
| 别名 | 行李寄存模式 |
| 类别 | 消息集成模式 |
| 核心思想 | 传引用而非传负载 |
| 典型搭配 | 对象存储、消息队列 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧