之前项目里面 pom 里面的 storm-kafka 的依赖版本是 1.0.1 或 1.1.0 这两个版本的 KafkaSpout 的 SpoutConfig 都是无法设置 securityProtocol 的。
如果强行设置会报 Exception in thread "main" java.lang.NoSuchFieldError: securityProtocol
而 HDP 2.5.0.0-1245 里面的 “定制版”。 pom 如下:
<dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-kafka</artifactId> <version>1.0.1.2.5.0.0-1245</version> </dependency>
当然,此版本号过于特殊, maven central 里面是找不到的。
在这 http://repo.spring.io/libs-release/org/apache/storm/storm-kafka/1.0.1.2.5.0.0-1245/
在 pom 里面配置一下就可以了,或者把这个地址加到 nexus 私服上。
<repositories> <repository> <id>spring-lib-release</id> <url>http://repo.spring.io/libs-release/</url> </repository> </repositories>
其它的就简单了。
下面是整体的 dependency
<dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.10.0.1</version> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.10</artifactId> <version>0.10.0.1</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-kafka</artifactId> <version>1.0.1.2.5.0.0-1245</version> </dependency> <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</artifactId> <version>1.1.0</version> <scope>${storm.scope}</scope> </dependency> </dependencies>
核心代码,2333:
SpoutConfig spoutConfig = new SpoutConfig(hosts, topic, zkRoot, clientId); spoutConfig.securityProtocol = "SASL_PLAINTEXT";
时间: 2024-11-05 22:37:44