memran/marwa-kafka

A lightweight, secure Kafka producer/consumer wrapper with Envelop messaging support

dev-main 2025-08-26 13:02 UTC

This package is not auto-updated.

Last update: 2025-08-27 11:20:49 UTC


README

License Total Downloads PHP Version Kafka

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