Laravel - 作业在一台服务器上分派,在另一台服务器上处理

djt*_*djt 6 queue amazon-sqs supervisord laravel

我正在研究 Laravel 应用程序的日志记录方面,amd 计划将数据发送到 SQS 以便稍后检索。但是,我想将作业从我的生产服务器分派到 AWS 队列,然后有一个队列在单独的 Logging 服务器上工作,该服务器侦听队列。

我了解如何设置 Queue worker 来监听 Queue,但是,Laravel 的 Jobs 是自我处理的。因此,当 Logging 服务器上的 worker 从 SQS 检索消息时,它会在相同的命名空间(具有相同的类名)中寻找作业来处理它。有没有办法以不同的方式处理这个问题,或者我只需要在日志服务器上命名作业处理程序,与生产服务器上的作业调度程序相同。

Atr*_*eur 4

您可以为每个特定服务器创建不同的队列,并根据它们必须执行的位置在其中一台服务器上发送每个作业。

基本上,这是将作业推送到特定队列的方法:

$job = (new SendReminderEmail($user))->onQueue('emails');
Run Code Online (Sandbox Code Playgroud)

这是处理特定队列中的作业的命令:

php artisan queue:listen --queue=emails
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你

  • 我们通过不使用 Laravel 队列来处理这个问题。我们使用 RabbitMQ 并设置我们自己的队列和消息总线,它们不依赖于我们其他应用程序中不存在的类的序列化实例。 (2认同)