ensi/laravel-phprdkafka-producer

laravel-phprdkafka的高级生产者

0.4.0 2024-06-26 12:55 UTC

This package is auto-updated.

Last update: 2024-08-27 08:49:28 UTC


README

Latest Version on Packagist Tests Total Downloads

ensi/laravel-phprdkafka 提供的高级生产者

安装

首先,您需要安装和配置 ensi/laravel-phprdkafka

然后,

composer require ensi/laravel-phprdkafka-producer

如果需要,发布配置文件

php artisan vendor:publish --provider="Ensi\LaravelPhpRdKafkaProducer\LaravelPhpRdKafkaProducerServiceProvider" --tag="kafka-producer-config"

版本兼容性

基本用法

发送单条消息

use Ensi\LaravelPhpRdKafkaProducer\HighLevelProducer;

(new HighLevelProducer($topicKey))->sendOne($messageString);

一次性发送多条消息

(new HighLevelProducer($topicKey))->sendMany([$message1String, $message2String]);

所有默认选项

use Ensi\LaravelPhpRdKafkaProducer\HighLevelProducer;
use Ensi\LaravelPhpRdKafkaProducer\Exceptions\KafkaProducerException;

$producer = new HighLevelProducer(
    topicKey: $topicKey, 
    producerName: 'some-producer-from-ensi/laravel-phprdkafka-config', 
    flushTimeout: 5000, // ms
    flushRetries: 5,
);

try {
    $producer
        ->setFlushTimeout(10000)
        ->setFlushRetries(10)
        ->sendOne($messageString);
} catch (KafkaProducerException $e) {
    //...
}

中间件

您可以通过配置全局添加中间件,或为特定生产者本地添加

$producer->pushMiddleware(SomeMiddleware::class)
        ->sendOne($messageString);

中间件示例

use Closure;
use Ensi\LaravelPhpRdKafkaProducer\ProducerMessage;

class SomeMiddleware
{
    public function handle(ProducerMessage $message, Closure $next): mixed
    {
        $message->headers = $message->headers ?: [];
        $message->headers['Header-Name'] = 'Header Value';

        return $next($message);
    }
}

贡献

请参阅 CONTRIBUTING 了解详细信息。

测试

  1. composer install
  2. composer test

安全漏洞

请查阅 我们的安全策略 了解如何报告安全漏洞。

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件