Создание потребителя Kafka не выдает никакой ошибки, даже если упомянутый в конфигурации брокер не существует
bool TestKafka::testKafkaConsumer()
{
std::string errstr;
test_conf=RdKafka::Conf::create(RdKafka::Conf::CONF_GLOBAL);
//Set the kafka broker
if(test_conf->set("metadata.broker.list","randomname",errstr)
!=RdKafKa::Conf::CONF_OK) {
logging::error("KafkaLogSource::open", "Failed to set broker: %s", errstr.c_str());
return false;
}
//Set the group id
if (test_conf->set("group.id", "test", errstr) != RdKafka::Conf::CONF_OK) {
logging::error("KafkaLogSource::open", "Failed to set group id: %s", errstr.c_str());
return false;
}
//Create the consumer object
test_consumer=RdKafka::KafkaConsumer::create(test_conf, errstr);
if (!test_consumer) {
logging::error("KafkaLogSource::open", "Failed to create consumer: %s", errstr.c_str());
return false;
}
delete test_conf;
//Subscribe to the topic
std::vector<std::string> topics;
topics.push_back(source_cfg.getKafkaTopic());
RdKafka::ErrorCode errorcode=test_consumer->subscribe(topics);
std::cerr<<errorcode; // writing the error code to the console.
return true;
}
Эта функция всегда возвращает true, даже когда я даю случайное имя брокера. Но он пишет следующее сообщение об ошибке в консоль, когда я даю некий брокер, который не существует.
0%3|1512070500.731|FAIL|rdkafka#consumer-1| [thrd:randomname:9092/bootstrap]: randomname:9092/bootstrap: Failed to resolve 'randomname:9092': Name or service not known
%3|1512070500.731|ERROR|rdkafka#consumer-1| [thrd:randomname:9092/bootstrap]: randomname:9092/bootstrap: Failed to resolve 'randomname:9092': Name or service not known
%3|1512070500.731|ERROR|rdkafka#consumer-1| [thrd:randomname:9092/bootstrap]: 1/1 brokers are down
0%3|1512070500.732|FAIL|rdkafka#consumer-2| [thrd:randomname:9092/bootstrap]: randomname:9092/bootstrap: Failed to resolve 'randomname:9092': Name or service not known
%3|1512070500.732|ERROR|rdkafka#consumer-2| [thrd:randomname:9092/bootstrap]: randomname:9092/bootstrap: Failed to resolve 'randomname:9092': Name or service not known
%3|1512070500.732|ERROR|rdkafka#consumer-2| [thrd:randomname:9092/bootstrap]: 1/1 brokers are down
Ноль, который вы найдете в начале сообщения об ошибке в консоли, - это код ошибки, который возвращается функцией подписки.
И когда я даю ("") пустую строку в качестве имени брокера, она не выдает никаких ошибок в консоль.
что он предполагает, когда мы даем пустую строку, и как он создает потребителя и успешно подписывается, когда я даю неверное имя брокера. Я совершенно новичок в кафке, пытаюсь научиться этому. Кто-нибудь может мне помочь.