sokanacademy/laravel-fluent-rabbitmq

在 Laravel 应用中集成 RabbitMQ

V1.1 2023-04-11 11:09 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包允许您的 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)。有关更多信息,请参阅许可证文件