nassirian/laravel-kafka-migration
Composer 安装命令:
composer require nassirian/laravel-kafka-migration
包简介
Manage Kafka topics like Laravel migrations — create, migrate, and rollback Kafka topics with artisan commands.
README 文档
README
Manage Kafka topics like Laravel migrations — create, track, and rollback Kafka topics using familiar artisan commands.
Requirements
- PHP 8.1+
- Laravel 10, 11, or 12
Installation
composer require nassirian/laravel-kafka-migration
Publish the config:
php artisan vendor:publish --tag=kafka-migration-config
Configuration
Set your Kafka connection in .env:
KAFKA_MIGRATION_DRIVER=longlang # rdkafka | longlang | http | mock KAFKA_BROKERS=localhost:9092
Available Drivers
| Driver | Description | Requires |
|---|---|---|
longlang |
Pure PHP Kafka client (recommended) | composer require longlang/phpkafka |
rdkafka |
High-performance via PHP extension | pecl install rdkafka |
jobcloud |
Fluent rdkafka wrapper by Jobcloud | composer require jobcloud/php-kafka-lib + ext-rdkafka |
http |
Confluent REST Proxy API | ext-curl, REST Proxy running |
mock |
In-memory (for testing/development) | Nothing |
Usage
Create a topic migration
php artisan make:kafka-topic orders php artisan make:kafka-topic user-events php artisan make:kafka-topic payment.processed
This creates a timestamped file in database/kafka-migrations/:
// database/kafka-migrations/2024_01_15_123456_create_orders_topic.php use Nassirian\LaravelKafkaMigration\Migration\KafkaMigration; return new class extends KafkaMigration { public function up(): void { $this->createTopic( $this->topic('orders') ->partitions(3) ->replicationFactor(1) ->retentionMs(604_800_000) // 7 days ->cleanupPolicy('delete') ->compressionType('snappy') ); } public function down(): void { $this->deleteTopic('orders'); } };
Topic builder options
$this->topic('my-topic') ->partitions(6) // number of partitions ->replicationFactor(3) // replication factor ->retentionMs(604_800_000) // retention in milliseconds ->retentionBytes(1_073_741_824) // retention in bytes ->cleanupPolicy('delete') // delete | compact | delete,compact ->compressionType('snappy') // none | gzip | snappy | lz4 | zstd | producer ->minInsyncReplicas(2) // min ISR ->maxMessageBytes(1_048_576) // max message size ->segmentBytes(1_073_741_824) // segment size ->config('custom.key', 'value'); // any raw Kafka config
Run migrations
php artisan kafka:migrate
Check status
php artisan kafka:migrate:status
Rollback last batch
php artisan kafka:migrate:rollback
php artisan kafka:migrate:rollback --step=2 # rollback 2 migrations
Reset all migrations
php artisan kafka:migrate:reset
Pretend mode (dry run)
php artisan kafka:migrate --pretend php artisan kafka:migrate:rollback --pretend
Using the Facade
use Nassirian\LaravelKafkaMigration\Facades\KafkaManager; KafkaManager::topicExists('orders'); // bool KafkaManager::listTopics(); // string[] KafkaManager::getTopicMetadata('orders'); // array // Switch drivers at runtime KafkaManager::driver('rdkafka')->listTopics();
Jobcloud Driver Details
The jobcloud driver uses jobcloud/php-kafka-lib as its configuration layer. That library provides a clean, opinionated fluent builder around ext-rdkafka — it handles broker normalisation, SASL, and SSL setup — and the package then hands off the resulting KafkaConfiguration (which extends RdKafka\Conf) directly to RdKafka\AdminClient for all topic operations.
KAFKA_MIGRATION_DRIVER=jobcloud KAFKA_BROKERS=broker1:9092,broker2:9092 # Optional SASL KAFKA_SECURITY_PROTOCOL=SASL_SSL KAFKA_SASL_MECHANISMS=PLAIN KAFKA_SASL_USERNAME=your-user KAFKA_SASL_PASSWORD=your-pass # Optional SSL KAFKA_SSL_CA=/path/to/ca.pem KAFKA_SSL_CERT=/path/to/cert.pem KAFKA_SSL_KEY=/path/to/key.pem
Extra rdkafka settings can be passed via extra_config in config/kafka-migration.php:
'jobcloud' => [ // ... 'extra_config' => [ 'log_level' => '6', 'fetch.message.max.bytes' => '1048576', ], ],
Integration tests that require a live broker are tagged with @group integration and can be run separately:
composer test-integration
Registering a Custom Driver
// In a service provider use Nassirian\LaravelKafkaMigration\KafkaManager; $this->app->make(KafkaManager::class)->extend('my-driver', function ($app) { return new MyCustomDriver($app['config']['kafka-migration.drivers.my-driver']); });
Testing
Use the mock driver in your tests so no real Kafka connection is needed:
// config/kafka-migration.php or .env.testing KAFKA_MIGRATION_DRIVER=mock
Run the test suite:
composer test
or
./vendor/bin/phpunit
License
MIT
nassirian/laravel-kafka-migration 适用场景与选型建议
nassirian/laravel-kafka-migration 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 03 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「queue」 「migration」 「laravel」 「topics」 「kafka」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 nassirian/laravel-kafka-migration 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 nassirian/laravel-kafka-migration 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 nassirian/laravel-kafka-migration 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
PHP AMQP Binding Library
A Laravel package to monitor queue jobs.
Lets you add foreign keys in a swift! Foreign key adder in laravel migration.
Manage PostgreSQL schemas in Laravel applications
Bitrix db migration core libs
The YADM migrations
统计信息
- 总下载量: 6
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 39
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-24