sokanacademy / laravel-fluent-rabbitmq
在 Laravel 应用中集成 RabbitMQ
V1.1
2023-04-11 11:09 UTC
Requires
- php: ^8.1
- ext-json: *
- illuminate/contracts: ^10
- php-amqplib/php-amqplib: >=3.0
Requires (Dev)
- nunomaduro/collision: ^6
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^8
- pestphp/pest: ^1.21
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
README
此包允许您的 Laravel 应用程序以事件驱动的方式轻松相互通信。
一个服务可以发布一个事件,另一个服务可以消费该事件并采取相应行动。
安装
您可以通过 composer 安装此包
composer require sokanacademy/laravel-fluent-rabbitmq:^1.0
然后,您应该运行此命令来发布包配置
php artisan vendor:publish --tag="laravel-fluent-rabbitmq-config"
这是发布配置文件的内容
<?php return [ 'host' => env('RABBITMQ_HOST', '127.0.0.1'), 'port' => env('RABBITMQ_PORT', 5672), 'user' => env('RABBITMQ_USER', 'guest'), 'password' => env('RABBITMQ_PASSWORD', 'guest'), 'vhost' => env('RABBITMQ_VHOST', '/'), 'consumers' => [ // [ // 'event' => '\App\Events\MyEvent', // 'routing_key' => 'my_routing_key', // if this event does not use routing key then remove this line // 'map_into' => '\App\Events\MapIntoEvent', // if you want to use the same event then remove this line // ], ], ];
使用方法
标记事件以在 RabbitMQ 上发布
您必须做的唯一一件事是确保您的事件实现了 Sokanacademy\RabbitMQ\Support\ShouldPublish
接口,然后就可以了。事件的所有公共属性都将被发布,您可以在您的消费者中访问它们。确保这些属性是基本类型或 Arrayable。
如果您想使用路由键发布事件,请考虑为您的事件添加 routingKey 方法
public function routingKey(): string { return 'routing_key'; }
在 rabbitmq 服务器中声明交换机
当 Laravel 应用程序想要发布事件时,您必须运行此命令来在 RabbitMQ 上创建适当的交换机。对于每个事件,它将创建一个具有事件类名称的交换机。您可以在这里了解更多关于交换机类型的信息。
交换机的默认类型将是 'fanout'。如果您想为事件更改交换机的类型,可以将此属性添加到您的事件中
private static string $exchangeType = 'topic';
从 RabbitMQ 消费事件
在 rabbitmq.php
配置文件中,您应该列出您想要消费的所有事件。
'consumers' => [ // [ // 'event' => '\App\Events\MyEvent', // 'routing_key' => 'my_routing_key', // if this event does not use routing key then remove this line // 'map_into' => '\App\Events\MapIntoEvent', // if you want to use the same event then remove this line // ], ],
如果您在两个服务(发布者和消费者)中都有相同的事件,则可以省略事件的 map_into 选项。
然后,您可以使用以下命令开始消费事件
php artisan rabbitmq:consume
更新日志
有关最近更改的更多信息,请参阅 更新日志。
贡献
有关详细信息,请参阅 贡献指南。
安全漏洞
有关如何报告安全漏洞,请参阅我们的安全策略。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件。