消息队列消费者
Consumer 是什么?
从消息队列里读消息并处理的程序
类比:收快递的人,凭取件码去驿站拿包裹
拉还是推
Kafka 是消费者主动拉(pull),自己控制节奏,不会被打爆;RocketMQ 和 RabbitMQ 表面是推(push),底层其实是长轮询拉取。
拉模式的好处是消费者永远不会被压垮,坏处是没有消息时会空转,所以都有长轮询机制。
消费语义
「消费成功」的标准由你定义:只要不抛异常就算成功,还是必须业务落库成功?这决定了 offset 什么时候提交。
- 处理失败要有限次重试,超过阈值进死信队列
- 消费逻辑必须幂等:重复消息不能造成重复扣款
- 慢消费要监控 lag,堆积是故障的前兆