Kafka 顺序与可靠投递
一、顺序消息
相同业务 key 路由到同一分区即可:
producer.send(new ProducerRecord<>("orders", orderId, payload));
单分区只能单消费者消费,吞吐受限;可在消费者侧用「key 哈希到内存队列」做并发消费。
二、可靠投递
- Producer 端:
acks=all+retries>0+enable.idempotence=true - Broker 端:
min.insync.replicas=2 - Consumer 端:手动 commit + 业务幂等表
三、事务消息
开启 transactional.id,把发消息与本地 DB 操作放进同一个事务,避免「DB 已写、消息没发出去」。