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 已写、消息没发出去」。