A lightweight, PSR-4 compliant Kafka producer/consumer library for PHP, powered by php-rdkafka and enriched with secure message envelopes from memran/marwa-envelop
.
- ✅ Lazy-loaded Kafka producer and consumer
- ✅ Secure messaging with TTL, signature & type using
Envelop
- ✅ PSR-4 structure and clean, testable design
- ✅ CLI and Web-compatible
- ✅ KISS & DRY principles applied
- ✅ Plug-and-play Docker + Kafka setup
composer require memran/marwa-kafka
Also ensure you have the rdkafka
extension installed:
pecl install rdkafka
git clone https://github.com/memran/marwa-kafka.git
cd marwa-kafka
docker compose up -d --build
docker compose exec php bash
use Marwa\Kafka\KafkaProducer;
use Marwa\Kafka\Support\KafkaConfig;
use Marwa\Kafka\DTO\Message;
$config = new KafkaConfig('kafka:9092', 'php-client');
$producer = new KafkaProducer($config, 'my-signature-key');
$producer->produce(new Message(
topic: 'test-topic',
payload: ['hello' => 'kafka'],
key: 'my-key',
headers: ['type' => 'event', 'sender' => 'php']
));
$producer->flush();
use Marwa\Kafka\KafkaConsumer;
use Marwa\Kafka\Support\KafkaConfig;
$config = new KafkaConfig('kafka:9092');
$consumer = new KafkaConsumer(
config: $config,
groupId: 'my-group',
topics: ['test-topic'],
signatureSecret: 'my-signature-key'
);
$consumer->run(function ($msg) {
print_r($msg['body']);
});
src/
├── KafkaProducer.php
├── KafkaConsumer.php
├── DTO/Message.php
├── Support/KafkaConfig.php
└── Contracts/
├── ProducerInterface.php
└── ConsumerInterface.php
composer install
vendor/bin/phpunit
Licensed under the MIT License.
memran/marwa-envelop
: Secure message envelope for Kafka, WebSocket, and HTTP.