Storm开发免不了本地测试,storm 0.9.6的版本一切正常,升级到0.10.0本地localCluster运行出现了问题。
kafkaSpout每次启动读取消息都是from-beginning。
经过各种测试,普通的kafka消费者没有这个错误,而且提交到集群也没问题。
网上大量查找解决办法,终于找到了
原文地址:http://www.bubuko.com/infodetail-672915.html
KafkaSpout的配置中有两个地方可以用到Zookeeper
用Zookeeper来记录KafkaSpout的处理进度,在topology重新提交或者task重启后继续之前的处理进度。在SpoutConfig中的zkServers,
zkPort和zkRoot与此相关。如果zkServer和zkPort没有设置,那么KafkaSpout会使用Storm集群所用的Zookeeper记录这些信息。
问题就出在上面这一段,没有配置zkServer和zkPort,尽管这些数据zkHosts里面都包含了,但是这两个字段还是要配置。
ZkHosts zkHosts = new ZkHosts("192.168.3.3:2181");
String zkRoot = "/kafka";
String zkSpoutId = "kafka";
SpoutConfig kafkaConfig = new SpoutConfig(zkHosts, topic, zkRoot, zkSpoutId);
KafkaSpout ks = new KafkaSpout(kafkaConfig);
kafkaConfig.zkPort = 2181;
List<String> servers = new ArrayList<>();
servers.add("192.168.3.3");
kafkaConfig.zkServers = servers;
logger.info("KafkaSpout Create Success.");
记录下来,引以为戒。