消费者没有收到消息,kafka控制台,新的消费者api,Kafka 0.9

时间:2016-01-17 21:55:04

标签: apache-kafka kafka-consumer-api

我正在为Kafka 0.9.0.0做Kafka Quickstart

我让动物园管理员在PageUser听,因为我跑了

localhost:2181

我有一个经纪人在bin/zookeeper-server-start.sh config/zookeeper.properties 听,因为我跑了

localhost:9092

我有一个制片人发布主题“test”,因为我跑了

bin/kafka-server-start.sh config/server.properties

当我运行旧的API使用者时,运行

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
yello
is this thing on?
let's try another
gimme more

但是,当我运行新的API使用者时,我在运行时没有得到任何东西

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

是否可以使用新的api从控制台消费者订阅主题?我该如何解决?

16 个答案:

答案 0 :(得分:24)

我的MAC框我在使用命令

时面临同样的控制台消费者问题而不消费任何消息
kafka-console-consumer --bootstrap-server localhost:9095 --from-beginning --topic my-replicated-topic

但是当我尝试

kafka-console-consumer --bootstrap-server localhost:9095 --from-beginning --topic my-replicated-topic --partition 0

很高兴地列出发送的消息。这是Kafka 1.10.11中的错误吗?

答案 1 :(得分:5)

我刚遇到此问题,解决方案是删除zookeeper中的/brokers并重新启动kafka节点。

bin/zookeeper-shell <zk-host>:2181

然后

rmr /brokers

不确定为什么这会解决它。

当我启用调试日志记录时,我在消费者中反复看到此错误消息:

2017-07-07 01:20:12 DEBUG AbstractCoordinator:548 - Sending GroupCoordinator request for group test to broker xx.xx.xx.xx:9092 (id: 1007 rack: null) 2017-07-07 01:20:12 DEBUG AbstractCoordinator:559 - Received GroupCoordinator response ClientResponse(receivedTimeMs=1499390412231, latencyMs=84, disconnected=false, requestHeader={api_key=10,api_version=0,correlation_id=13,client_id=consumer-1}, responseBody={error_code=15,coordinator={node_id=-1,host=,port=-1}}) for group test 2017-07-07 01:20:12 DEBUG AbstractCoordinator:581 - Group coordinator lookup for group test failed: The group coordinator is not available. 2017-07-07 01:20:12 DEBUG AbstractCoordinator:215 - Coordinator discovery failed for group test, refreshing metadata

答案 2 :(得分:4)

对我来说,此线程中描述的解决方案有效-https://stackoverflow.com/a/51540528/7568227

检查是否

offsets.topic.replication.factor

(或可能与复制相关的其他配置参数) 不高于经纪人数量。就我而言,这就是问题所在。

此修复程序之后不再需要使用--partition 0。

否则,我建议遵循上述线程中描述的调试过程。

答案 3 :(得分:3)

你的localhost就是这里的foo。 如果你将localhost字替换为实际的主机名,它应该可以工作。

像这样:

生产者

./bin/kafka-console-producer.sh --broker-list \
sandbox-hdp.hortonworks.com:9092 --topic test

消费者:

./bin/kafka-console-consumer.sh --topic test --from-beginning \    
--bootstrap-server bin/kafka-console-consumer.sh --new-consumer \
--topic test --from-beginning \
--bootstrap-server localhost:9092

答案 4 :(得分:2)

我遇到了同样的问题,现在我已经想通了。

当你使用--zookeeper时,它应该被提供zookeeper地址作为参数。

使用--bootstrap-server时,应该提供代理地址作为参数。

答案 5 :(得分:2)

此问题还会影响使用水槽从kafka中提取数据并将数据接收到HDFS。

解决上述问题:

  1. 停止Kafka经纪人
  2. 连接到zookeeper群集并删除/ brokers z node
  3. 重新启动kafka经纪人
  4. 我们正在使用群集的kafka客户端版本和scala版本没有问题。 Zookeeper可能有关于代理主机的错误信息。

    验证操作:

    在kafka中创建主题。

    $ kafka-console-consumer --bootstrap-server slavenode01.cdh.com:9092 --topic rkkrishnaa3210 --from-beginning
    

    打开制作人频道并向其发送一些消息。

    $ kafka-console-producer --broker-list slavenode03.cdh.com:9092 --topic rkkrishnaa3210
    

    打开消费者频道以使用来自特定主题的消息。

    $ kafka-console-consumer --bootstrap-server slavenode01.cdh.com:9092 --topic rkkrishnaa3210 --from-beginning
    

    从水槽中测试这个:

    Flume代理配置:

    rk.sources  = source1
    rk.channels = channel1
    rk.sinks = sink1
    
    rk.sources.source1.type = org.apache.flume.source.kafka.KafkaSource
    rk.sources.source1.zookeeperConnect = ip-20-0-21-161.ec2.internal:2181
    rk.sources.source1.topic = rkkrishnaa321
    rk.sources.source1.groupId = flume1
    rk.sources.source1.channels = channel1
    rk.sources.source1.interceptors = i1
    rk.sources.source1.interceptors.i1.type = timestamp
    rk.sources.source1.kafka.consumer.timeout.ms = 100
    rk.channels.channel1.type = memory
    rk.channels.channel1.capacity = 10000
    rk.channels.channel1.transactionCapacity = 1000
    rk.sinks.sink1.type = hdfs
    rk.sinks.sink1.hdfs.path = /user/ce_rk/kafka/%{topic}/%y-%m-%d
    rk.sinks.sink1.hdfs.rollInterval = 5
    rk.sinks.sink1.hdfs.rollSize = 0
    rk.sinks.sink1.hdfs.rollCount = 0
    rk.sinks.sink1.hdfs.fileType = DataStream
    rk.sinks.sink1.channel = channel1
    

    运行水槽代理:

    flume-ng agent --conf . -f flume.conf -Dflume.root.logger=DEBUG,console -n rk
    

    观察来自使用者的日志,该主题的消息是以HDFS编写的。

    18/02/16 05:21:14 INFO internals.AbstractCoordinator: Successfully joined group flume1 with generation 1
    18/02/16 05:21:14 INFO internals.ConsumerCoordinator: Setting newly assigned partitions [rkkrishnaa3210-0] for group flume1
    18/02/16 05:21:14 INFO kafka.SourceRebalanceListener: topic rkkrishnaa3210 - partition 0 assigned.
    18/02/16 05:21:14 INFO kafka.KafkaSource: Kafka source source1 started.
    18/02/16 05:21:14 INFO instrumentation.MonitoredCounterGroup: Monitored counter group for type: SOURCE, name: source1: Successfully registered new MBean.
    18/02/16 05:21:14 INFO instrumentation.MonitoredCounterGroup: Component type: SOURCE, name: source1 started
    18/02/16 05:21:41 INFO hdfs.HDFSDataStream: Serializer = TEXT, UseRawLocalFileSystem = false
    18/02/16 05:21:42 INFO hdfs.BucketWriter: Creating /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920.tmp
    18/02/16 05:21:48 INFO hdfs.BucketWriter: Closing /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920.tmp
    18/02/16 05:21:48 INFO hdfs.BucketWriter: Renaming /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920.tmp to /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920
    18/02/16 05:21:48 INFO hdfs.HDFSEventSink: Writer callback called.
    

答案 6 :(得分:2)

就我而言,这不起作用

kafka-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic

这有效

kafka-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic --partition 0

因为主题__consumer_offsets位于无法访问的代理上。基本上,我忘了复制它。搬迁__consumer_offsets解决了我的问题。

答案 7 :(得分:1)

请你这样试试:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic

答案 8 :(得分:1)

使用:bin / kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

注意:删除&#34; - 新消费者&#34;来自你的命令

供参考,请参阅此处:https://kafka.apache.org/quickstart

答案 9 :(得分:0)

在我的情况下,它没有使用任何一种方法,然后我也将日志级别增加到./bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --from-beginning --topic MY_TOPIC DEBUG ,启动了控制台消费者

[2018-03-11 12:11:25,711] DEBUG [MetadataCache brokerId=10] Error while fetching metadata for MY_TOPIC-3: leader not available (kafka.server.MetadataCache)

然后得到了下面的日志

{{1}}

这里的重点是我有两个kafka节点,但有一个是关闭的,由于某种原因,默认情况下kafka-console使用者不会消耗,如果有一些分区不可用,因为节点已关闭(在这种情况下为分区3) 。它在我的申请中没有发生。

可能的解决方案

  • 启动经纪人
  • 删除该主题并再次创建该主题,将所有分区放置在在线代理节点

答案 10 :(得分:0)

在Mac上也遇到了同样的问题。 我检查了日志,发现以下错误。

Number of alive brokers '1' does not meet the required replication factor '3' for the offsets topic (configured via 'offsets.topic.replication.factor'). 
This error can be ignored if the cluster is starting up and not all brokers are up yet.

可以通过将复制因子更改为1来解决。在server.properties中添加以下行,然后重新启动Kafka / Zookeeper。

offsets.topic.replication.factor=1

答案 11 :(得分:0)

从bin中运行以下命令:

./kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092

“测试”是主题名称

答案 12 :(得分:0)

复制因子必须至少为3

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test 

答案 13 :(得分:0)

我遇到了这样的问题,即消费者完成执行 在 kafka_2.12-2.3.0.tgz 中。

尝试调试,但未打印任何日志。

尝试使用 kafka_2.12-2.2.2 正常运行 可以。

并尝试从quickstart guide运行Zookeeper和kafka!

答案 14 :(得分:0)

就我而言,void check_allergies(int score) { const struct { int mask; char *name; } allergies[] = {{1, "Egg"}, {2, "Peanuts"}, {4, "Shellfish"} }; // Just add more allergies in this array if(score == 0) { printf("No allergies"); return; } for(int i=0; i<sizeof allergies/sizeof allergies[0]; i++){ if(score & allergies[i].mask) printf("%s, ", allergies[i].name); } } int main(void) { int score; printf("Enter the score:"); if(scanf("%d",&score) != 1) { // Always check scanf for error perror("Error reading score"); exit(EXIT_FAILURE); } check_allergies(score); } 中的broker.id=1是个问题。

如果仅使用一台kafka服务器进行开发,则应该为server.properties

别忘了删除所有日志并重新启动zookeper和kafka

  • 删除broker.id=0(在/tmp/kafka-logs文件中定义)
  • 删除server.properties
  • 重新启动Zookeper和Kafka

答案 15 :(得分:-2)

在kafka_2.11-0.11.0.0中,不推荐使用zookeeper服务器,而且它正在使用bootstrap-server,它将占用代理IP地址和端口。如果您提供正确的代理参数,您将能够使用消息。

e.g。 $ bin / kafka-console-consumer.sh --bootstrap-server:9093 --topic test --from-beginning

我正在使用端口9093,因为它可能会有所不同。

问候。