channext / channext-rabbitmq
Channext服务的RabbitMQ集成
1.3.4
2024-09-04 15:13 UTC
Requires
- illuminate/support: ^6|^7|^8|^9|^10|^11
- illuminate/validation: ^6|^7|^8|^9|^10|^11
- nyholm/psr7: ^1.8
- php-amqplib/php-amqplib: ^3.5
- ramsey/uuid: ^4.7
- sentry/sentry: ^4.0
- symfony/http-client: ^6.0
- symfony/process: ^5|^6|^7.0
This package is auto-updated.
Last update: 2024-09-09 07:12:41 UTC
README
Laravel与RabbitMQ的集成是一个简化消息发布和消费的包。该包期望您使用RabbitMQ服务器上的主题交换,并根据消息的路由键进行路由。
安装
- 在项目根目录运行
composer require channext/channext-rabbitmq
- 运行
php artisan vendor:publish
并选择“Provider: Channext\ChannextRabbitmq\Providers\RabbitMQServiceProvider”选项 - 如果您想使用RabbitMQAuth外观并运行
php artisan vendor:publish
,请选择“Provider: Channext\ChannextRabbitmq\Providers\EventAuthServiceProvider”选项 - 在EventAuthServiceProvider的boot()方法中实现您的逻辑
- 如果您想使用EventFail外观并运行
php artisan vendor:publish
,请选择“Provider: Channext\ChannextRabbitmq\Providers\EventFailServiceProvider”选项 - 在EventFailServiceProvider的boot()方法中实现您的逻辑
- 将正确的RabbitMQ凭证添加到您的.env文件中(有关可用变量,请参阅config/rabbitmq.php。另外,请确保为不同的服务使用不同的队列名称,否则只有一个服务将处理事件,其他服务将错过它。)
- 运行
php artisan config:cache
- 运行
php artisan cache:clear
- 更新routes/topics.php文件,添加您想要监听的路由
- 运行
php artisan rabbitmq:consume
以开始消费消息。或者,您可以使用php artisan rabbitmq:listen
以单独的应用容器监听和消费每个事件。(这更适合开发目的,但稍微慢一点。)
示例
此包允许您使用外观执行简单的RabbitMQ消息发布和消费。要开始使用外观,只需在您想使用的类中导入它即可
use Channext\ChannextRabbitmq\Facades\RabbitMQ;
要发布消息,只需使用RabbitMQ外观中的publish方法
RabbitMQ::publish($body, $routingKey);
其中,body参数是要发送的数据,routing key是消费者可以监听的路线。例如,当用户创建时,body应包含所有用户数据,routing key可以是"user.created"。
要开始消费消息,您应更新routes/topics.php文件,添加您希望服务监听的全部路由键。这实际上与Laravel通常处理路由的方式非常相似
RabbitMQ::route('user.login', [Controller::class, 'test'], retry: false);
此路由将仅监听具有routing key "user.login"的消息,并将执行控制器中的"test"方法。
由路由器调用的控制器中的函数应始终接受消息作为第一个参数
public function test(AMQPMessage $message) { $messageBody = $message->all(); }