环顾四周,除了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退出无效)
谢谢。
答案 0 :(得分:2)
从CLI确保Kafka主题是否“就绪”并不是一件容易的事。许多事情都会出错。
我们遇到了同样的问题,目前采用的方法涉及对kafka主题CLI的多次调用
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);
});
})
一起存在kafka-topics.sh --describe --topic FOO
(输出应为空)kafka-topics.sh --describe --topic FOO --unavailable-partitions
(输出应为空)仍然不能100%地确定该主题为“就绪”,但对我们有用。
答案 1 :(得分:1)
kafka-topics
可以列出复制不足的,离线的和min-isr最低的分区。
最好的选择是检查您的主题是否重复不足。如果不是,它应该已经准备好了。