安装PHP参考:https://blog.csdn.net/abcdu1/article/details/112317578
1.安装librdkafka
(1)下载
https://github.com/edenhill/librdkafka
(2)解压配置
tar -zxvf librdkafka.tar.gz
cd librdkafka/
./configure
(3)编译安装
make && make install
2.安装php-rdkafka
(1)下载
https://github.com/arnaud-lb/php-rdkafka
(2)解压配置
必须安装PHP 才可以执行 phpize命令,安装PHP参考
tar -zxvf php-rdkafka.tar.gz
cd php-rdkafka/
phpize
./configure
(3)编译安装
make all -j 5
sudo make install
(4)配置php.ini 文件
打开php.ini ,添加
extension=rdkafka.so
(5)安装测试
php -i | grep rdkafka
3.代码示例运行
(1)代码示例
新建文件producer.php , 将下面代码复制进去,修改如下两行:
$conf->set('metadata.broker.list', 'localhost:9092'); //修改为自己建立的broker地址
$topic = $producer->newTopic("test"); //修改为自己建立的topic
<?php
$conf = new RdKafka\Conf();
$conf->set('metadata.broker.list', 'localhost:9092');
//If you need to produce exactly once and want to keep the original produce order, uncomment the line below
//$conf->set('enable.idempotence', 'true');
$producer = new RdKafka\Producer($conf);
$topic = $producer->newTopic("test");
for ($i = 0; $i < 10; $i++) {
$topic->produce(RD_KAFKA_PARTITION_UA, 0, "Message $i");
$producer->poll(0);
}
for ($flushRetries = 0; $flushRetries < 10; $flushRetries++) {
$result = $producer->flush(10000);
if (RD_KAFKA_RESP_ERR_NO_ERROR === $result) {
break;
}
}
if (RD_KAFKA_RESP_ERR_NO_ERROR !== $result) {
throw new \RuntimeException('Was unable to flush, messages might be lost!');
}
?>
(2)运行测试
保存文件后,运行
php producer.php
可以看到消息推入到 kafka 对应topic中。
参考:
https://github.com/edenhill/librdkafka
https://github.com/arnaud-lb/php-rdkafka
https://arnaud.le-blanc.net/php-rdkafka-doc/phpdoc/rdkafka.examples-producer.html
https://arnaud.le-blanc.net/php-rdkafka-doc/phpdoc/rdkafka.installation.manual.html
https://arnaud.le-blanc.net/php-rdkafka-doc/phpdoc/rdkafka.installation.windows.html