php rdkafka消费kafka
时间: 2023-07-21 08:06:04 浏览: 291
你好!要在 PHP 中消费 Kafka 消息,你可以使用 rdkafka 扩展。以下是一个简单的示例代码,演示如何使用 rdkafka 消费 Kafka 消息:
```php
<?php
$conf = new RdKafka\Conf();
$conf->set('group.id', 'your-consumer-group-id');
$consumer = new RdKafka\KafkaConsumer($conf);
$consumer->subscribe(['your-topic']);
while (true) {
$message = $consumer->consume(1000); // 等待一秒钟来获取消息
switch ($message->err) {
case RD_KAFKA_RESP_ERR_NO_ERROR:
// 成功接收到消息
echo $message->payload . PHP_EOL;
break;
case RD_KAFKA_RESP_ERR__PARTITION_EOF:
// 所有分区上的消息已被消费完毕,等待更多消息
break;
case RD_KAFKA_RESP_ERR__TIMED_OUT:
// 等待超时
break;
default:
// 其他错误
echo '错误:' . $message->errstr() . PHP_EOL;
break;
}
}
?>
```
在上面的示例中,我们首先创建了一个 KafkaConsumer 对象,并设置了消费者组的 ID。然后通过调用 `subscribe` 方法订阅了要消费的主题。接下来,我们使用一个无限循环来不断尝试获取消息,并根据返回的错误代码进行相应的处理。
对于成功接收到的消息,你可以在 `echo` 语句中执行你的自定义逻辑。当所有分区上的消息都被消费完毕时,`RD_KAFKA_RESP_ERR__PARTITION_EOF` 错误代码会被触发,你可以根据需要进行处理。而 `RD_KAFKA_RESP_ERR__TIMED_OUT` 错误代码表示等待超时。
请注意,你需要先安装并启用 rdkafka 扩展,以便在 PHP 中使用它。你可以从 pecl 或源代码进行安装。希望这可以帮助到你!如果有任何问题,请随时问我。
阅读全文