加载中...

消息投递语义(delivery semantics)描述消息系统在故障情况下对每条消息被处理次数的保证,通常分三级:至多一次(at-most-once)、至少一次(at-least-once)、精确一次(exactly-once)。
严格意义上跨系统的精确一次投递在异常网络下不可能,工程上实现的是精确一次处理:要么让消费端幂等(重复处理结果不变),要么用事务把消费位点与处理结果原子提交。Kafka 的幂等生产者与事务、Flink 的分布式快照加两阶段提交 Sink 都是典型方案。
通用经验是:传输层用至少一次保证不丢,业务层用幂等键或去重表消除重复,即至少一次加幂等等效于精确一次。

登录 后参与讨论
暂无讨论,来发表第一条评论吧