Создание потребителя 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 

Ноль, который вы найдете в начале сообщения об ошибке в консоли, - это код ошибки, который возвращается функцией подписки.

И когда я даю ("") пустую строку в качестве имени брокера, она не выдает никаких ошибок в консоль.

что он предполагает, когда мы даем пустую строку, и как он создает потребителя и успешно подписывается, когда я даю неверное имя брокера. Я совершенно новичок в кафке, пытаюсь научиться этому. Кто-нибудь может мне помочь.

0 ответов

Другие вопросы по тегам