如何解决Kafka消息生产者NoSuchMethodError org.apache.Kafka.common.secu



我正在尝试运行一个简单的消息生成器,它利用SSL安全性与Confluent平台连接。我使用Spring Kafka中的KafkaTemplate来发送消息。然而,当我呼叫kafkaTemplate.send()时,我收到以下消息:

Failed to construct kafka producer
java.lang.NoSuchMethodError: org.apache.kafka.common.security.ssl.SslFactory.sslEngineBuilder()Lorg/apache/kafka/common/security/ssl/SslEngineBuilder;

我不确定这个问题是否源于属性文件中缺少的属性(例如spring.kafka.properties.*(,或者这个问题是否是依赖项之一。在我的pom.xml文件中,我有以下内容:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>5.5.1</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-streams-avro-serde</artifactId>
<version>5.5.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-client-plugins</artifactId>
<version>5.5.1-ce</version>
</dependency>
</dependencies>

到目前为止,我一直无法找到为什么没有找到这种特殊的方法。我怀疑我丢失了一处或多处房产,但我不确定是哪一处。

在属性文件中,我有以下值

spring.kafka.properties.basic.auth.credentials.source=USER_INFO
spring.kafka.properties.security.protocol=SASL_SSL
spring.kafka.properties.sasl.mechanism=OAUTHBEARER
spring.kafka.properties.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler
spring.kafka.properties.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required username=<removed> password=<removed> metadataServerUrls=<removed>

根据我所做的研究和这里提供的帮助,我已经能够确定问题是兼容性问题。Confluent 5.5.1库与Spring Boot 2.4.x不兼容,因为兼容Spring Boot 2.4.x的kafka-clients 2.6.0与该版本的Confluent不兼容。

相关内容

最新更新