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