各种TimeoutException问题
会抛出org.apache.kafka.common.errors.TimeoutException:
message可能为各种:
- Batch Expired
- Failed to update metadata after 60000 ms.
- ailed to update metadata after
- …
原因
原因是发布到zookeeper的advertised.host.name如果没有设置,默认取java.net.InetAddress.getCanonicalHostName().
值,被用于生产端和消费端。因此外部网络或者未配置hostname映射的机器访问kafka集群时就会有网络问题了。
原因是kafka客户端连接到broker是成功的,但连接到集群后更新回来的集群meta信息是错误的即是会返回的是节点的hostname,解决办法就是手动配置advertised.host.name和advertised.port,2个参数都必须配置,重启问题解决:
advertised.host.name=10.0.0.100
advertised.port=9092