php-rdkafka手动提交offset

$setting = require DIR . '/setting.php';
$conf = new RdKafka\Conf();
$conf->set('api.version.request', 'true');

$conf->set('group.id', $setting['consumer_id']);

$conf->set('metadata.broker.list', $setting['bootstrap_servers']);
$conf->set('enable.auto.commit', 0);//手动提交offset
$topicConf = new RdKafka\TopicConf();

$conf->setDefaultTopicConf($topicConf);

$consumer = new RdKafka\KafkaConsumer($conf);

$consumer->subscribe([$setting['topic_name']]);

while (true) {

$message = $consumer->consume(30 * 1000);
switch ($message->err) {
    case RD_KAFKA_RESP_ERR_NO_ERROR:
        var_dump($message);
        $consumer->commit($message);//手动提交offset
        break;
    case RD_KAFKA_RESP_ERR__PARTITION_EOF:
        echo "No more messages; will wait for more\n";
        break;
    case RD_KAFKA_RESP_ERR__TIMED_OUT:
        echo "Timed out\n";
        break;
    default:
        throw new \Exception($message->errstr(), $message->err);
        break;
}

}

你可能感兴趣的:(kafka-php)