承接 memran/marwa-kafka 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

memran/marwa-kafka

最新稳定版本:v1.0.0

Composer 安装命令:

composer require memran/marwa-kafka

包简介

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

README 文档

README

CI Status PHP PHPUnit PHPStan Code Style Kafka Integration Latest Version Downloads License

memran/marwa-kafka is a production-focused Kafka producer/consumer library for PHP 8.2+. It wraps php-rdkafka with signed envelope handling from memran/marwa-envelop v2, safer configuration validation, PSR-3 logging hooks, and a lightweight developer workflow.

Features

  • Lazy Kafka producer and consumer setup with PSR-4 autoloading
  • Envelope signing, signature validation, and TTL-aware message filtering
  • Early validation for brokers, topics, group IDs, secrets, and timeout values
  • Optional PSR-3 structured logging for invalid or failed consumer message handling
  • PHPUnit, PHPStan 2.x, PHP-CS-Fixer, and GitHub Actions quality gates
  • Real Kafka integration tests for Docker and CI environments with ext-rdkafka

Requirements

  • PHP 8.2 or newer
  • ext-rdkafka
  • A reachable Kafka broker
  • memran/marwa-envelop v2

Install the package:

composer require memran/marwa-kafka

Install the extension if needed:

pecl install rdkafka

Quick Start

Produce a signed message

<?php

declare(strict_types=1);

use Marwa\Envelop\EnvelopBuilder;
use Marwa\Kafka\Producer\KafkaProducer;
use Marwa\Kafka\Support\KafkaConfig;

$config = new KafkaConfig([
    'brokers' => 'kafka:9092',
    'clientId' => 'producer-app',
]);

$producer = (new KafkaProducer($config))
    ->withTopics(['user-events']);

$producer->produce(
    'user-events',
    EnvelopBuilder::start()
        ->type('event')
        ->sender('php-app')
        ->receiver('user-service')
        ->body(['message' => 'Hello from PHP'])
        ->ttl(300)
        ->sign('super-secret')
        ->build(),
    'user-123',
);

$producer->flush();

Consume with PSR-3 logging

<?php

declare(strict_types=1);

use Marwa\Kafka\Consumer\KafkaConsumer;
use Marwa\Kafka\Support\KafkaConfig;
use Monolog\Handler\StreamHandler;
use Monolog\Level;
use Monolog\Logger;

$logger = new Logger('kafka');
$logger->pushHandler(new StreamHandler('php://stderr', Level::Warning));

$config = new KafkaConfig([
    'brokers' => 'kafka:9092',
    'clientId' => 'consumer-app',
]);

$consumer = (new KafkaConsumer($config, 'php-group', 'super-secret'))
    ->withTopics(['user-events'])
    ->withLogger($logger);

$consumer->run(static function ($envelop): bool {
    var_dump($envelop->body);

    return true;
});

Expired messages and invalid signatures are skipped safely. When auto-commit is disabled, returning false from the callback prevents manual commit.

Configuration

KafkaConfig accepts:

  • brokers: required bootstrap server list such as kafka:9092
  • clientId: optional Kafka client ID
  • extra: optional associative array of extra Kafka client options

Empty broker strings, topic names, host overrides, group IDs, signature secrets, and invalid timeout values now fail fast with InvalidArgumentException.

Project Structure

src/
  Consumer/
  Contracts/
  Producer/
  Support/
example/
tests/
  Consumer/
  Producer/
  Support/
  Integration/

Development

Start the local Kafka stack:

docker compose up -d --build
docker compose exec php sh

Common Composer scripts:

composer test
composer test:integration
composer test:coverage
composer analyse
composer lint
composer fix
composer ci

Run the integration suite in Docker:

docker compose exec php composer install --no-interaction --prefer-dist
docker compose exec php composer test:integration

Testing and Static Analysis

  • composer test runs the unit suite.
  • composer test:integration runs real Kafka round-trip tests.
  • composer analyse runs PHPStan 2.x.
  • composer lint and composer fix run PHP-CS-Fixer.

CI

GitHub Actions runs:

  • A matrix quality job on PHP 8.2, 8.3, and 8.4
  • A Docker-based Kafka integration job that boots the local stack and runs the integration suite inside the PHP container

Security Notes

  • Do not hard-code production secrets in application code.
  • Use strong per-environment signatureSecret values.
  • Prefer Kafka ACLs and environment-specific broker configuration.
  • Review extra client options carefully before enabling SASL or delivery-related settings.

Contributing

Open a pull request with a clear summary, test results, and any README or example updates required by public API changes.

License

Released under the MIT License.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 1

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-08-26

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固