如何解决Kafka消息生产者NoSuchMethodError org.apache.kafka.common.security.ssl.SslFactory.sslEngineBuilder()
How to solve Kafka message producer NoSuchMethodError org.apache.kafka.common.security.ssl.SslFactory.sslEngineBuilder()
我正在尝试 运行 一个利用 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 不兼容,因为 kafka-clients 2.6.0
that is compatible with Spring Boot 2.4.x is not compatible with that version of Confluent.
我正在尝试 运行 一个利用 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 不兼容,因为 kafka-clients 2.6.0
that is compatible with Spring Boot 2.4.x is not compatible with that version of Confluent.