中文文档
Kafka-php هو عميل PHP kafka خالص يدعم حاليًا إصدار أكبر من 0.8.x من Kafka، وهذا المشروع v0.2.x وv0.1.x غير متوافقين في حالة استخدام الإصدار v0.1.x الأصلي. يمكنك الرجوع إلى document Kafka PHP v0.1.x Document، لكن يوصى بالتبديل إلى v0.2.x . يستخدم الإصدار 0.2.x تنفيذ PHP غير المتزامن وتفاعل وسيط كافكا، وهو أكثر استقرارًا من الإصدار 0.1.x الفعال، نظرًا لأن استخدام لغة PHP لذلك لا يتم تجميع أي توسع يمكن استخدامه لتقليل تكاليف الوصول والصيانة
أضف دليل lib إلى PHP include_path واستخدم أداة التحميل التلقائي مثل تلك الموجودة في دليل الأمثلة (يتبع الكود اصطلاح PEAR/Zend فئة واحدة لكل ملف).
ما عليك سوى إضافة تبعية nmred/kafka-php
إلى مشروعك إذا كنت تستخدم Composer لإدارة تبعيات مشروعك.
$ composer require 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 ());
$ config = Kafka ProducerConfig:: getInstance ();
$ config -> setMetadataRefreshIntervalMs ( 10000 );
$ config -> setMetadataBrokerList ( ' 10.13.4.159:9192 ' );
$ config -> setBrokerVersion ( ' 1.0.0 ' );
$ config -> setRequiredAck ( 1 );
$ config -> setIsAsyn ( false );
$ config -> setProduceInterval ( 500 );
$ producer = new Kafka Producer (
function () {
return [
[
' topic ' => ' test ' ,
' value ' => ' test....message. ' ,
' key ' => ' testkey ' ,
],
];
}
);
$ producer -> setLogger ( $ logger );
$ producer -> success ( function ( $ result ) {
var_dump ( $ result );
});
$ producer -> error ( function ( $ errorCode ) {
var_dump ( $ errorCode );
});
$ producer -> send ( true );
<?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 ProducerConfig:: getInstance ();
$ config -> setMetadataRefreshIntervalMs ( 10000 );
$ config -> setMetadataBrokerList ( ' 127.0.0.1:9192 ' );
$ config -> setBrokerVersion ( ' 1.0.0 ' );
$ config -> setRequiredAck ( 1 );
$ config -> setIsAsyn ( false );
$ config -> setProduceInterval ( 500 );
$ producer = new Kafka Producer ();
$ producer -> setLogger ( $ logger );
for ( $ i = 0 ; $ i < 100 ; $ i ++) {
$ producer -> send ([
[
' topic ' => ' test1 ' ,
' value ' => ' test1....message. ' ,
' key ' => '' ,
],
]);
}
<?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 ( ' 1.0.0 ' );
$ config -> setTopics ([ ' test ' ]);
// $ config - > setOffsetReset ( 'earliest' );
$ consumer = new Kafka Consumer ();
$ consumer -> setLogger ( $ logger );
$ consumer -> start ( function ( $ topic , $ part , $ message ) {
var_dump ( $ message );
});
الرجوع إلى المثال
المجموعة 1: 531522091 المجموعة 2: 657517955