用途:面向 Apache Kafka 消息队列的配置与编码实践,重点解决生产者可靠性、消费者 offset 提交、幂等与死信处理等问题。
主要能力:生产者配置(acks、retries、batchSize、linger、幂等);消费者配置(auto-offset-reset、enable-auto-commit、手动提交);幂等性保证(生产者 enable.idempotence + acks=all + 消费者业务去重);Spring Kafka 的 @KafkaListener、@RetryableTopic、@DltHandler;DLT 死信(DefaultErrorHandler + DeadLetterPublishingRecoverer);顺序消息(同一 Key 发往同一分区);事务消息(@Transactional + KafkaTransactionManager)。
使用方式:核心业务建议 acks=all + min.insync.replicas=2 + replication.factor=3;消费者关闭自动提交,处理完成后 acknowledge;配置 ErrorHandler 将异常消息转入 DLT;发送时用 Key 路由分区并异步 callback 处理结果;消费端用事件 ID 做业务去重。
适用场景:订单、支付、交易等核心业务消息,以及需要重试与死信兜底的消费链路。
限制:Kafka Streams、Kafka Connect、Schema Registry 不在范围内;acks=all 延迟较高;手动提交漏提交会导致重复消费;DLT 重试次数有限需人工处理;消费者数超过分区数会空闲;earliest 会重放历史消息;异常重试可能乱序,严格顺序需单分区;@RetryableTopic 会创建额外 retry topic;大消息需配置 max.message.bytes。本技能不收集、存储或传输任何用户数据。