我在远程机器上设置了kafka和zookeeper . 在那台机器上我可以看到下面在官方网站上使用测试方法 .
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic listings-incoming
This is a message
This is another message
> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --listings-incoming --from-beginning
This is a message
This is another message
但是当我使用我的本地消费者脚本时,它无法正常工作:
bin/kafka-console-consumer.sh —bootstrap-server X.X.X.X:9092 —listings-incoming —from-beginning —consumer-property group.id=group2
没有看到消息显示但显示的是:
[2017-08-11 14:39:55,825] WARN自动提交抵消{listings-incoming-4 = OffsetAndMetadata {offset = 0,metadata =''},listings-incoming-2 = OffsetAndMetadata ,listing-incoming-3 = OffsetAndMetadata {offset = 0,metadata =''},listings-incoming-0 = OffsetAndMetadata {offset = 0,metadata =''},listings-incoming-1 = OffsetAndMetadata {对于组group1,offset = 0,metadata =''}}失败:由于该组已经重新 balancer 并将分区分配给另一个成员,因此无法完成提交 . 这意味着后续调用poll()的时间长于配置的max.poll.interval.ms,这通常意味着轮询循环花费了太多时间进行消息处理 . 您可以通过增加会话超时或通过max.poll.records减少poll()中返回的批量的最大大小来解决此问题 . (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
更新*****
我的zookeeper和kafka在同一台机器上运行,现在我在advertised.listeners上的配置是这样的:
advertised.listeners=PLAINTEXT://the.machine.ip.address:9092
我试着把它改成:
advertised.listeners=PLAINTEXT://my.client.ip.address:9092
然后运行客户端使用者脚本,它给出错误:
[2017-08-11 15:49:01,591] WARN在获取具有相关ID 3的元数据时出错:(org.apache.kafka.clients.NetworkClient)[2017-08-11 15:49 :22,106] WARN Bootstrap broker 10.161.128.238:9092已断开连接(org.apache.kafka.clients.NetworkClient)[2017-08-11 15:49:22,232] WARN获取具有相关ID 7的元数据时出错:(org.apache.kafka.clients.NetworkClient)[2017-08-11 15:49:22,340] WARN获取相关ID为8的元数据时出错:(org.apache.kafka.clients .NetworkClient)[2017-08-11 15:49:40,453] WARN Bootstrap broker 10.161.128.238:9092已断开连接(org.apache.kafka.clients.NetworkClient)[2017-08-11 15:49:40,531] WARN错误获取具有相关ID 12的元数据:(org.apache.kafka.clients.NetworkClient)
1 回答
您可能尚未在broker server.properties文件中正确配置
advertised.listeners
.从https://kafka.apache.org/documentation/
并在相同的文件中
因此,如果没有设置advertised.listeners并且侦听器只是在侦听localhost:9092或127.0.0.1:9092或0.0.0.0:9092,那么当客户端向引导程序发出元数据请求时,将告知客户端连接到localhost服务器 . 当客户端实际在与代理运行的同一台机器上运行时,它会起作用,但是当您远程连接时它将失败 .
您应将
advertised.listeners
设置为运行代理的主机的完全限定域名或公共IP地址 .例如
要么