我重写了我的C ++代码,使用 KafkaConsumer 和队列。
这是我的源代码片段(伪代码):
conf = RdKafka::Conf::create(RdKafka::Conf::CONF_GLOBAL);
//set basic conf
setGlobalConf("bootstrap.servers", brokers);
setGlobalConf("metadata.broker.list", brokers);
setGlobalConf("client.id", "app-meteo");
setGlobalConf("compression.codec", "snappy");
//set group id
setGlobalConf("group.id", params.at("group.id"));
//set default_topic_conf
tconf = RdKafka::Conf::create(RdKafka::Conf::CONF_TOPIC);
setConf(tconf, "auto.offset.reset", "earliest");
conf->set("default_topic_conf", tconf, errstr);
//create consuner
auto consumer = RdKafka::KafkaConsumer::create(conf, errstr);
consumer->subscribe("my_topic");
//create the queue for that consumer
auto queue = RdKafka::Queue::create(consumer);
//then ...
while (true)
{
RdKafka::Message* msg = consumer->consume(1000);
do_smthg(*msg, nullptr);
}
这里的问题是msg包含一个始终错误的错误: RdKafka :: ERR__TIMED_OUT
即使 my_topic 中有很多消息,我也不知道为什么会这样。
注意:我遵循了常见问题解答和文档,但可能我错过了一些内容。