channext/channext-rabbitmq

Channext服务的RabbitMQ集成

1.3.4 2024-09-04 15:13 UTC

README

Laravel与RabbitMQ的集成是一个简化消息发布和消费的包。该包期望您使用RabbitMQ服务器上的主题交换,并根据消息的路由键进行路由。

安装

  1. 在项目根目录运行composer require channext/channext-rabbitmq
  2. 运行php artisan vendor:publish并选择“Provider: Channext\ChannextRabbitmq\Providers\RabbitMQServiceProvider”选项
  3. 如果您想使用RabbitMQAuth外观并运行php artisan vendor:publish,请选择“Provider: Channext\ChannextRabbitmq\Providers\EventAuthServiceProvider”选项
  4. 在EventAuthServiceProvider的boot()方法中实现您的逻辑
  5. 如果您想使用EventFail外观并运行php artisan vendor:publish,请选择“Provider: Channext\ChannextRabbitmq\Providers\EventFailServiceProvider”选项
  6. 在EventFailServiceProvider的boot()方法中实现您的逻辑
  7. 将正确的RabbitMQ凭证添加到您的.env文件中(有关可用变量,请参阅config/rabbitmq.php。另外,请确保为不同的服务使用不同的队列名称,否则只有一个服务将处理事件,其他服务将错过它。)
  8. 运行php artisan config:cache
  9. 运行php artisan cache:clear
  10. 更新routes/topics.php文件,添加您想要监听的路由
  11. 运行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(); }