IT评测·应用市场-qidao123.com技术社区

标题: Kafka-生产者消息幂等性和消息事件机制 [打印本页]

作者: 自由的羽毛    时间: 2025-4-21 06:58
标题: Kafka-生产者消息幂等性和消息事件机制
1、生产者消息幂等性

1.1、Kafka幂等性标题

当Producer的acks=1或-1时,Producer每次发送消息都需要获取Broker端返回的RecordMetadata。这个过程需要两次跨网络请求。

如果要包管消息安全,对于每个消息,这两次网络请求就必须要求是幂等的。但是,网络是不可靠的,特别是在高并发场景下,通常没办法包管这两个请求是幂等的。
Producer发送消息的过程中,如果第一步请求成功了,第二步大概没有返回。这时,Producer就会认为消息发送失败了。Producer会发起重试。重试次数由参数ProducerConfig.RETRIES_CONFIG,默认值Integer.MAX。
Producer会重复发送多条消息到Broker中。Kafka如何包管无论Producer向Broker发送多少次重复的数据,Broker端都只保存一条消息,而不会重复保存多条消息呢?这就是Kafka消息生产者的幂等性标题。
Kafka中对于幂等性属性的三个参数:

   在配置类:ProducerConfig.java
  1.2、Kafka幂等性计划

要理解幂等性计划,需要先理解分布式数据通报过程中的三个数据语义:

Kafka 的幂等性计划通过以下两个核心组件实现:

通过 PID 和 SN,Kafka Broker 可以检测并抛弃重复的消息,从而实现幂等性。
1.3、幂等性工作原理

1.4、配置幂等性

在 Kafka 生产者客户端中,可以通过以下配置启用幂等性:
  1. // 启用幂等性
  2. props.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true");
复制代码
启用后,Kafka 会自动分配 PID 并管理 SN。
2、生产者消息事件

Kafka 的 生产者消息事件 是一种机制,用于确保生产者发送的消息在多个分区之间具有原子性(要么全部成功,要么全部失败)。这对于需要强一致性和精确一次语义(exactly-once)的场景非常紧张。
2.1. 事件的核心概念


2.2、事件的工作原理

2.3、事件的注意事项


2.4、事件的应用场景


2.5、代码实验

测试流程:先启动一个消费者,再启动这个生产者,进行试验。
分两个场景验证:
非常事件:生产者事件回滚没有提交,消费者端没有消费记载。

正常事件:生产者事件提交,消费者端有消费记载。

   非常事件:TransactionErrorDemo.java
  正常事件:TransactionProducer.java
  测试代码,文末有获取方式。
  3、我的公众号&资料获取

敬请关注我的公众号:大象只为你,连续更新技术知识…
相关资料获取:
如需SpringKafka项目Demo,请后台回复:【springkafka】,代码有更新。
我的代码是基于SpringBoot3.x上写的,IDEA 2024版

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4