arquivei / php-kafka
PHP Kafka Client
v0.1-alpha
2020-11-19 12:40 UTC
Requires
- php: ^7.4
- ext-rdkafka: 3.1.*
- monolog/monolog: 2.*
- psr/log: ^1.1
Requires (Dev)
- phpstan/phpstan: ^0.12.49
- phpstan/phpstan-phpunit: ^0.12.16
- phpunit/phpunit: ^8.5
- squizlabs/php_codesniffer: 3.5.*
Suggests
- monolog/monolog: 2.*
This package is auto-updated.
Last update: 2024-11-11 23:38:14 UTC
README
A PHP client for Apache Kafka
Requirements
- PHP 7.4
- librdkafka 1.1.0
- rdkafka 3.x
Install
-
Install librdkafka c library
$ cd /tmp $ mkdir librdkafka $ cd librdkafka $ curl -L https://github.com/edenhill/librdkafka/archive/v1.0.0.tar.gz | tar xz $ cd librdkafka-1.0.0 $ ./configure $ make $ make install
-
Install the php-rdkafka PECL extension
$ pecl install rdkafka
-
Add the following to your php.ini file to enable the php-rdkafka extension
extension=rdkafka.so
-
Install this package via composer using:
composer require arquivei/php-kafka-consumer
Usage
<?php require_once 'vendor/autoload.php'; use Kafka\Consumer\Entities\Config; use Kafka\Consumer\Contracts\ConsumerDLQ; use Kafka\Consumer\Entities\Config\Sasl; use Kafka\Consumer\Entities\Config\MaxAttempt; class DefaultConsumer extends Consumer { public function handle(string $message): void { print 'Init: ' . date('Y-m-d H:i:s') . PHP_EOL; sleep(2); print 'Finish: ' . date('Y-m-d H:i:s') . PHP_EOL; } } $config = new Config( new Sasl('username', 'pasword', 'mechanisms'), 'topic', 'broker:port', 1, 'php-kafka-consumer-group-id', new DefaultConsumer(), 'security-protocol' ); (new \PHP\Kafka\Consumer($config))->consume(); $config = new Config( new Sasl('username', 'pasword', 'mechanisms'), 'topic', 'broker:port', 1, 'php-kafka-consumer-group-id', new DLDConsumer(), new DLQ("parking-lot"), 'security-protocol' ); (new \PHP\Kafka\Consumer($config))->consume();