PHP Kafka client ------ php-rdkafka

 安装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

猜你喜欢

转载自blog.csdn.net/abcdu1/article/details/112349810