1:kafka版本:kafka_2.11-2.1.0
2:server.config配置
############### Socket Server Settings ###############
listeners=PLAINTEXT://内网ip:9092
advertised.listeners=PLAINTEXT://服务器外网ip:9092
3:问题描述:可以成功创建topic。用户下面命令发送消息报错
./kafka-console-producer.sh --broker-list 内网ip:9092 --topic kk
报错信息:Error while fetching metadata with correlation id 1 : {kk=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
4:尝试过:不配置advertised.listeners 参数,
只配置:listeners=PLAINTEXT://内网ip:9092,服务器本地可以正常收发消息。
问题是现在需要通过外网,链接kafka服务进行收发消息。请碰到过类似问题的解答下。
只要增加
这项配置,就会上面的错误
listeners配置了内网,外网默认就可以用了。
只配置了
我本地通过telnet服务器的9092,能正常访问。说明:listeners配置了内网,外网默认就可以用。
但是通过springboot工程访问就报:
spring-kafka版本:1.0.2
springboot版本:2.0.2
jdk:1.8.0_181
配置:
kafka.consumer.servers=服务器外网地址:9092 kafka.consumer.enable.auto.commit=true kafka.consumer.session.timeout=6000 kafka.consumer.auto.commit.interval=100 kafka.consumer.auto.offset.reset=latest kafka.consumer.topic=testq kafka.consumer.group.id=testq kafka.consumer.concurrency=10 kafka.producer.servers=服务器外网地址:9092 kafka.producer.retries=0 kafka.producer.batch.size=4096 kafka.producer.linger=1 kafka.producer.buffer.memory=40960
说明你外网已经好了,现在是程序与kafka之间的错误了。
还有其他错误吗?这个错误信息太少看不出来。先确认下客户端和kafka之间的版本是不是匹配。
按spring的文档,kafka_2.11-2.1.0 可以使用spring-kafka:1.0.2 的版本,所以应该不是版本的问题。
服务启动日志看:先报了下面的错误,
之后就周期报下面的错误:
先用命令进行生产和发送,看看集群是否正常。
在服务器上用命令收发消息都正常的。命令:
刚看到springboot工程启动日志,kafka服务返回的地址是:172.17.108.105:9092。说明,kafka服务返回的地址是个内网地址,所有连接不上。怎样才能返回外网连接的地址?
麻烦了,简单点用域名吧,配host就行了。
kafka外网转发:
https://www.orchome.com/1903
你的答案