kafka-0.10.2.1:Producer生产时无法自动创建Topic
集群环境:
CenterOS 1台
Kafka:0.10.2.1版本。
今天在测试环境下,我们的Kafka集群工作不正常,具体现象为,使用confulentkafka向kafka集群生产消息失败,且并没有任何异常。
检查server配置、broker日志、程序异常日志等等都没有发现,网上搜索资料,并没有类似的现象出现,这就很令人绝望。
没办法,自己写测试程序,注册confluentkafka的producer error事件一点点打印日志。
发现一个有规律的现象:
- 发送每经过一段时间之后,producer的报告会打印Local:Mesasge Time out的异常,
经过简单分析,得出基本结论:该异常并不是引发消息发送不过去的诱因,而是结果。精力不能放到这个异常上面。
但是好歹也算是给我一个方向:producer在生产数据时,消息发送超时,并没有发送过去,超时了。
有了初步的方向,首先就要先确定
- producer-client与broker的网络连接健康状态,(这个不用多说,联系运维同事,各种测验,甚至内网ip都换了过,初步排除。)
- topic是否自动创建
- 发送消息时消息体有没有限制。
- 其他等
网络问题初步排除后,我们去检查auto.create.topics.enable的配置,默认为true,理论上来讲topic应该会自动创建。
且其他环境的topic都可以完美的自动创建。好吧,抱着试试看的态度,手动创建topic,然后发消息。不多说,上图


竟然发送过去了。
昨天各种测验各种排查甚至连神器windbg也没放过,都没找到问题,抱着试试看的态度一试,竟然找到了原因:因为Topic没有自动创建,导致消息发送失败。
好吧,接下来的问题就简单了,排查为啥Topic没有自动创建成功
继续注册日志事件跟进

上边那个异常有误导我很长时间,暂且略过不表,跟他关系不大。
主要原因在下边:Topic Partition Count is Zero,should refresh metadata。
我们知道,metadata的信息是存在zookeeper中的,有可能是broker和zookeeper的信息同步不及时或者有问题导致topic创建问题失败。
去检查server.properties(又来检查了):zookeeper.connect的配置是内网的配置10.x.x.46:2181。
鉴于zookeeper和kafka都在同一台机器上,把zookeeper的地址改成127.0.0.1,做尝试,果不其然:

Topic可以自动创建,消息生成成功,问题解决。至此,这次kafka的排障就告一段路。
结论:生产发送失败时,主要从以下几个方向入手检查
1、要检查网络连通性
2、topic是否正常创建
3、kafka和zookeeper的连通性,重要的事情要重点标注。
kafka-0.10.2.1:Producer生产时无法自动创建Topic的更多相关文章
- Kafka 0.10问题点滴
15.如何消费内部topic: __consumer_offsets 主要是要让它来格式化:GroupMetadataManager.OffsetsMessageFormatter 最后用看了它的源码 ...
- Kafka 0.10.1版本源码 Idea编译
Kafka 0.10.1版本源码 Idea编译 1.环境准备 Jdk 1.8 Scala 2.11.12:下载scala-2.11.12.msi并配置环境变量 Gradle 5.6.4: 下载Grad ...
- kafka 0.10.2 消息生产者(producer)
package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.*; import org.apache.kafk ...
- Kafka 0.10.0
2.1 Producer API We encourage all new development to use the new Java producer. This client is produ ...
- Kafka 0.10 KafkaConsumer流程简述
ConsumerConfig.scala 储存Consumer的配置 按照我的理解,0.10的Kafka没有专门的SimpleConsumer,仍然是沿用0.8版本的. 1.从poll开始 消费的规则 ...
- Kafka 0.10.1.1 特点
1.Consumer优化:心跳线程可作为后台线程,提交offset,剥离出poll函数 问题:0.10新设计的consumer是单线程的,提交offset是在poll中.本次的poll调用,提交上次p ...
- kafka 0.10.2 消息生产者
package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.KafkaProducer; import org ...
- kafka 0.10.2 cetos6.5 集群部署
安装 zookeeper http://www.cnblogs.com/xiaojf/p/6572351.html安装 scala http://www.cnblogs.com/xiaojf/p/65 ...
- kafka 0.8.1 新producer 源码简单分析
1 背景 最近由于项目需要,需要使用kafka的producer.但是对于c++,kafka官方并没有很好的支持. 在kafka官网上可以找到0.8.x的客户端.可以使用的客户端有C版本客户端,此客户 ...
随机推荐
- 全栈开发博客系统(nodejs+vuejs+mongodb)
本篇文章将会介绍如何使用nodejs+vuejs构建个人博客. 主要分三部分内容: 环境准备 博客后端管理系统(admin) 后端服务(主要提供admin及web端接口) 博客前端展示(web) 环境 ...
- Empire – PowerShell 后渗透攻击框架
0x01 简介 Empire是一个后开发框架.它是一个纯粹的PowerShell代理,具有加密安全通信和灵活架构的附加功能.Empire具有在不需要PowerShell.exe的情况下执行PowerS ...
- @Qualifier高级应用---按类别批量依赖注入【享学Spring】
每篇一句 罗斯:选秀状元可能有水货,但MVP绝对没有 前言 在上篇文章(讲解@LoadBalanced负载均衡)的末尾,我抛出了一个很重要的问题,建议小伙伴自己深入思考一番:本文主要针对此问题,作出一 ...
- Android开发教程:开发框架基本原理
1.提供应用程序框架(Framework) 开发者可以遵照这些框架搭建应用程序读者可以结合J2SE平台的Applet框架或J2ME平台的移动信息设备套件框架来理解Android平台的应用程序框架. 每 ...
- Android 图片处理之 Fresco
一.关于 Fresco github: https://github.com/facebook/fresco API: http://www.fresco-cn.org/javadoc/referen ...
- tensorflow 使用 cpu 而不使用 gpu 问题
查看 tensorflow 版本 conda list 例如发现 tensorflow 1.10.0 tensorflow-gpu 1.10.0 当两个版本相同时,默认会使用 cpu 版本 如果同时存 ...
- HBase 超详细介绍
1-HBase的安装 HBase是什么? HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到 ...
- Java第二次作业第四题
文本行输入学生姓名,下来框选择课程名称,文本行输入课程成绩:点击"录入"按钮,相关信息显示在文本区:点击"统计"按钮,将所有录入的成绩的平均成绩显示在另一个文本 ...
- java反射机制,以及对反射机制的了解
反射是什么?反射有什么用?我相信大家在开始学的时候都会有疑惑,直到如今我学的还不够深入只能简单的说说反射的作用,理论的我也听得很迷糊,接下来我就以几个例子来 写写反射的用处: 494696003群,有 ...
- [LeetCode]sum合集
LeetCode很喜欢sum,里面sum题一堆. 1.Two Sum Given an array of integers, return indices of the two numbers suc ...