报错
flink消费kafka时正常,但是向kafka生产消息时产生报错:
java.lang.NoClassDefFoundError: org/apache/kafka/common/errors/InvalidTxnStateException
排错
开始以为是jar包冲突导致,因为项目中即用到了kafka-clients,也用到flink-connector-kafka_2.11,分别排除两个依赖下的kafka-clients。
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka_2.11</artifactId>
<version>${flink.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
</exclusion>
</exclusions>
</dependency>
问题没有解决。想到我的kafka连接器用的是flink-connector-kafka_2.11,而kafka集群安装的是0.11.0版本的,官网上说flink-connector-kafka_2.11虽然会适配Kafka的最新版本,但是对于Kafka 0.11.x和0.10.x版本,建议分别使用专用的flink-connector-kafka-0.11_2.11和flink-connector-kafka-0.10_2.11。
于是修改flink-kafka连接器:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka-0.11_2.11</artifactId>
<version>${flink.version}</version>
</dependency>
问题解决。
PS:我的${flink.version}为1.7.0。根据你的实际情况修改版本号。