在项目中使用php-rdkafka的高级消费者时,发现设置了:
$topicConf->set('enable.auto.commit', 'false');
没有效果,还是会自动提交offset,查了各种资料,正确的应该是这样设置:
$conf->set('enable.auto.commit', 'false');
相关说明见文档:https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md
附上示例:
<?php
$conf = new RdKafka\Conf();
// Set a rebalance callback to log partition assignments (optional)
$conf->setRebalanceCb(function (RdKafka\KafkaConsumer $kafka, $err, array $partitions = null) {
switch ($err) {
case RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS:
echo "Assign: ";
var_dump($partitions);
$kafka->assign($partitions);
break;
case RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS:
echo "Revoke: ";
var_dump($partitions);
$kafka->assign(NULL);
bre