Kafka-php 使用純粹的PHP 編寫的kafka 用戶端,目前支援0.8.x 以上版本的Kafka,該專案v0.2.x 和v0.1.x 不相容,如果使用原有的v0.1 .x 的可以參考文件Kafka PHP v0.1.x Document , 不過建議切換到v0.2.x 上。 v0.2.x 使用 PHP 異步執行的方式來和kafka broker 交互,較 v0.1.x 更加穩定高效, 由於使用 PHP 語言編寫所以不用編譯任何的擴展就可以使用,降低了接入與維護成本。
PHP 版本大於5.5
Kafka Server 版本大於0.8.0
#消費模組Kafka Server 版本需要大於0.9.0
新增composer 依賴nmred/kafka -php 到專案的composer.json 檔案即可,如:
{ "require": { "nmred/kafka-php": "0.2.*" } }
<?php require '../vendor/autoload.php'; date_default_timezone_set('PRC'); use Monolog\Logger; use Monolog\Handler\StdoutHandler; // Create the logger $logger = new Logger('my_logger'); // Now add some handlers $logger->pushHandler(new StdoutHandler()); // 设置生产相关配置,具体配置参数见 [Configuration](Configuration.md) $config = \Kafka\ProducerConfig::getInstance(); $config->setMetadataRefreshIntervalMs(10000); $config->setMetadataBrokerList('10.13.4.159:9192'); $config->setBrokerVersion('0.9.0.1'); $config->setRequiredAck(1); $config->setIsAsyn(false); $config->setProduceInterval(500); $producer = new \Kafka\Producer(function() { return array( array( 'topic' => 'test', 'value' => 'test....message.', 'key' => 'testkey', ), ); }); $producer->setLogger($logger); $producer->success(function($result) { var_dump($result); }); $producer->error(function($errorCode, $context) { var_dump($errorCode); }); $producer->send();
##Consumer
<?php require '../vendor/autoload.php'; date_default_timezone_set('PRC'); use Monolog\Logger; use Monolog\Handler\StdoutHandler; // Create the logger $logger = new Logger('my_logger'); // Now add some handlers $logger->pushHandler(new StdoutHandler()); $config = \Kafka\ConsumerConfig::getInstance(); $config->setMetadataRefreshIntervalMs(10000); $config->setMetadataBrokerList('10.13.4.159:9192'); $config->setGroupId('test'); $config->setBrokerVersion('0.9.0.1'); $config->setTopics(array('test')); //$config->setOffsetReset('earliest'); $consumer = new \Kafka\Consumer(); $consumer->setLogger($logger); $consumer->start(function($topic, $part, $message) { var_dump($message); });
以上是使用 PHP 編寫的 Kafka 用戶端的詳細內容。更多資訊請關注PHP中文網其他相關文章!