Flink Maven項目兼容多版本Kafka


主要有兩種方法可以解決:修改jar包內部的包名或者使用自定義classloader

Flink需要導入kafka-clients來支持對kafka的生產和消費。kafka-clients0.11提供的api僅在kafka0.11、kafka0.10版本可用,如果要對kafka0.8、kafka0.9進行生產和消費,則需要使用版本相匹配的kafka-clients的jar包。但如果直接使用這些jar包會導致jar包沖突,因為里面的類名字相同且都是在相同包名下的。

      <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_${scala.binary.version}</artifactId>
            <version>0.11.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_${scala.binary.version}</artifactId>
            <version>0.10.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_${scala.binary.version}</artifactId>
            <version>0.9.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_${scala.binary.version}</artifactId>
            <version>0.8.2.2</version>
        </dependency>    

像這樣把所有版本的依賴引入必然會造成jar包沖突。

因此需要對jar包中的包名進行修改防止沖突。
這里分別將org.apache.kafka修改為org.apache.kafka08和org.apache.kafka09。使用的工具為jarjar。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM