memran / marwa-kafka
A lightweight, secure Kafka producer/consumer wrapper with Envelop messaging support
dev-main
2025-08-26 13:02 UTC
Requires
- php: ^8.1 || ^8.2 || ^8.3
- ext-rdkafka: *
- memran/marwa-envelop: ^1.0
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is not auto-updated.
Last update: 2025-08-27 11:20:49 UTC
README
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
.
✨ Features
- ✅ 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
📦 Installation
composer require memran/marwa-kafka
Also ensure you have the rdkafka
extension installed:
pecl install rdkafka
🐳 Quick Start (Docker Dev Environment)
1. Clone and start Kafka + PHP containers
git clone https://github.com/memran/marwa-kafka.git
cd marwa-kafka
docker compose up -d --build
2. Enter PHP CLI container
docker compose exec php bash
🧩 Usage Example
Produce Message
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();
Consume Message
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']); });
📂 Directory Structure
src/
├── KafkaProducer.php
├── KafkaConsumer.php
├── DTO/Message.php
├── Support/KafkaConfig.php
└── Contracts/
├── ProducerInterface.php
└── ConsumerInterface.php
🧪 Testing
composer install vendor/bin/phpunit
📋 License
Licensed under the MIT License.
🧠 Related Projects
memran/marwa-envelop
: Secure message envelope for Kafka, WebSocket, and HTTP.