ensi / laravel-phprdkafka-producer
laravel-phprdkafka的高级生产者
0.4.0
2024-06-26 12:55 UTC
Requires
- php: ^8.1
- ext-rdkafka: *
- ensi/laravel-phprdkafka: ^0.4.0
- laravel/framework: ^9.0 || ^10.0 || ^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- nunomaduro/collision: ^6.0 || ^7.0 || ^8.1
- orchestra/testbench: ^7.0 || ^8.0 || ^9.0
- pestphp/pest: ^1.22 || ^2.0
- pestphp/pest-plugin-laravel: ^1.1 || ^2.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.11
- spaze/phpstan-disallowed-calls: ^2.15
README
为 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 了解详细信息。
测试
- composer install
- composer test
安全漏洞
请查阅 我们的安全策略 了解如何报告安全漏洞。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。