簡體   English   中英

如何解決 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 不兼容,因為與 Spring Boot 2.4.x兼容kafka-clients 2.6.0 與該版本的 Confluent 不兼容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM