Kafka 读取不到数据,没有报错信息

 现象:php

         kafka写入和消费一切正常状况,经过一段时间的运行,偶尔发现取不到数据;最后查看kafka消费状况,发现有阻塞。html

解决:java

一、确认kafka运行状况,是否有堵塞负载均衡

/kafka/bin/目录下执行ui

./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper=localhost2181 --group=0url

被网上一些代码片断坑骗  ~~~~(>_<)~~~~  设计

二、检查代码server

    我出现的问题,通过确认后发现,全部topic 的group.id都是同样的名称htm

三、 不一样的topic 设置不一样的group.idget

 Consumers

    本质上kafka只支持Topic.每一个consumer属于一个consumer group;反过来讲,每一个group中能够有多个consumer.发送到Topic的消息,只会被订阅此Topic的每一个group中的一个consumer消费.

 

    若是全部的consumer都具备相同的group,这种状况和queue模式很像;消息将会在consumers之间负载均衡.

    若是全部的consumer都具备不一样的group,那这就是"发布-订阅";消息将会广播给全部的消费者.

    在kafka中,一个partition中的消息只会被group中的一个consumer消费;每一个group中consumer消息消费互相独立;咱们能够认为一个group是一个"订阅"者,一个Topic中的每一个partions,只会被一个"订阅者"中的一个consumer消费,不过一个consumer能够消费多个partitions中的消息.kafka只能保证一个partition中的消息被某个consumer消费时,消息是顺序的.事实上,从Topic角度来讲,消息仍不是有序的.

 

    kafka的设计原理决定,对于一个topic,同一个group中不能有多于partitions个数的consumer同时消费,不然将意味着某些consumer将没法获得消息.

因此不用在意consumer的多少,要保证consumer的消费来至同一个订阅者,也就是一个consumer对应一个group;若是多个consumer来同时设置同一个group,是取不到数据的;

    group.id 是自定义的。

相关文章
相关标签/搜索