记录kafka出现的问题,原因,与对应场景下的解决方案. 造成问题方式有很多种,这里只是记录遇到的或已知的,若有遗漏情况欢迎补充 由于问题很多出现在生产环境,故敏感信息已屏蔽,不影响问题介绍
kafka-Client报错如下
2019-10-30 17:03:39.048 [kafka-producer-network-thread | producer-2] ERROR (这里是一些业务自定义信息,设计隐私,不便展示) com.mym.test.exception.MsgSendFailException: org.apache.kafka.common.errors.TimeoutException: Batch containing 5 record(s) expired due to timeout while requesting metadata from brokers for TOPIC_1 at com.mym.test.produce.Producer10$1.onCompletion(Producer10.java:30) at org.apache.kafka.clients.producer.internals.RecordBatch.done(RecordBatch.java:109) at org.apache.kafka.clients.producer.internals.RecordBatch.maybeExpire(RecordBatch.java:155) at org.apache.kafka.clients.producer.internals.RecordAccumulator.abortExpiredBatches(RecordAccumulator.java:235) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:205) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:134) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.kafka.common.errors.TimeoutException: Batch containing 5 record(s) expired due to timeout while requesting metadata from brokers for TOPIC_1重点
Caused by: org.apache.kafka.common.errors.TimeoutException: Batch containing 5 record(s) expired due to timeout while requesting metadata from brokers for TOPIC_1
从报错信息可知,由于发送时请求kafka的brokers的metadata超时,导致数据被过期处理。即移除发送队列缓冲区(异步发送时),且会回调onComplete方法(如果设置了Callback时),exception传入onComplete方法告知上层给调用方本次数据发送失败。
出此报错信息一般是因为kafka集群内部有问题可能是kakfa某个broker"被下线",或者真的下线停了可能kafka集群内部有问题,某个分区leader正在reblance,时间过久造成问题方式有很多种,这里只是记录遇到的或已知的,若有遗漏情况欢迎补充
