storm 0.10.0 kafkaSpout 总是读取旧消息 offset丢失问题

来源:互联网 发布:mac ps cs6永久序列号 编辑:程序博客网 时间:2024/04/30 08:16

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.");

记录下来,引以为戒。

0 0