测试kafka是否准备就绪,可以从cli访问主题

时间:2019-05-13 15:11:50

标签: apache-kafka

环顾四周,除了kafka-topic --list找不到其他东西。 我在K8s环境中运行Kafka,并且有一个初始化容器来创建几个主题。我希望仅在创建主题并且主题“可订阅”时才启动主容器。 kafka-topic --list,我相信我的Pod会显示有关该主题的错误消息。

我确实尝试过kafka-console-consumer,但是即使该主题不存在,它也不会以状态1退出。如果无法访问引导服务器,它会以状态1退出。我正在寻找与以下类似的解决方案

kafka-console-consumer --bootstrap-server correct-bootstrap-server:9092 --topic correct-topic --timeout-ms 100

退出时为0(这个有效)

kafka-console-consumer --bootstrap-server wrong-bootstrap-server:9092 --topic wrong-topic --timeout-ms 100

以非零退出代码退出(这个也可以)。

kafka-console-consumer --bootstrap-server correct-bootstrap-server:9092 --topic wrong-topic --timeout-ms 100

以非零退出代码退出(此退出以代码0退出无效)

谢谢。

2 个答案:

答案 0 :(得分:2)

从CLI确保Kafka主题是否“就绪”并不是一件容易的事。许多事情都会出错。

我们遇到了同样的问题,目前采用的方法涉及对kafka主题CLI的多次调用

  1. 我们确保该主题与function lfDisplayProductInformation(id){ if($(`[rel="child-${id}"]`).attr("hidden") === 'hidden'){ $(`[rel="child-${id}"]`).removeAttr('hidden') } else if(!$(`[rel="child-${id}`).attr("hidden")){ $(`[rel="child-${id}"]`).attr("hidden", true) } } $(".tablesort") .tablesorter({ theme: 'blue', showProcessing : true }) // assign the sortStart event .bind("sortStart",function(e, t) { $("tr[rel^='parent']").each(function() { var parentRow = $(this); var tag = (parentRow.attr('rel')).split("-")[1]; var childRow = $(`tr[rel="child-${tag}"]`) if(!childRow.attr("hidden")){ childRow.attr("hidden", true) } }); }) .bind("sortEnd",function(e, t) { $("tr[rel^='parent']").each(function() { var parentRow = $(this); var tag = (parentRow.attr('rel')).split("-")[1]; var childRow = $(`tr[rel="child-${tag}"]`) childRow parentRow.after(childRow); }); }) 一起存在
  2. 检查所有分区是否具有前导kafka-topics.sh --describe --topic FOO(输出应为空)
  3. 检查所有分区是否已完全复制kafka-topics.sh --describe --topic FOO --unavailable-partitions(输出应为空)

仍然不能100%地确定该主题为“就绪”,但对我们有用。

答案 1 :(得分:1)

kafka-topics可以列出复制不足的,离线的和min-isr最低的分区。 最好的选择是检查您的主题是否重复不足。如果不是,它应该已经准备好了。