首页/开发/系统分析与架构设计速查/消息队列与投递语义

消息队列与投递语义

消息系统提供解耦、削峰与异步重试;投递语义分至多一次、至少一次与精确一次(依赖消费端幂等或事务实现),选型时要看清语义边界。

语义

语义行为代价
至多一次不重复,可能丢失可靠性最低
至少一次不丢,可能重复需要消费端幂等
精确一次不丢不重(限定范围)实现复杂,有性能成本
多数业务用至少一次加幂等消费即可;顺序性往往只在分区内成立,跨分区顺序需业务收敛。

易错点

  • 无分区键约束下假设全局有序,消费乱序
  • 把至少一次当精确一次用,重复消息造成重复扣款

数据来源与参考

  • 《Kafka 权威指南》(Narkhede 等)
  • RabbitMQ 文档:AMQP 概念与确认
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌