我将承认轻微的 sleep 不足作为序言。
设置如下:
API 端点(服务器 A) 接收传入调用,并将其添加到 RabbitMQ 服务器(服务器 B)上的特定队列。
RabbitMQ(服务器 B) 只是一个 RabbitMQ 队列服务器。不多不少。
Laravel 安装(服务器 C) 是我们实际的 Laravel 安装,它的目的是在特定队列上查找作业并使用它们执行操作。
我们在 Laravel 安装中有一个 RabbitMQ 包,它允许通过 RabbitMQ 连接使用常规的 Laravel 队列机制。
我遇到的问题是我们可以为队列生成一个工作人员 - 但由于我们没有生成传递 $job
类的作业(作业内容本身通常是JSON 数组),Laravel 安装不知道如何处理这项工作。
所以我的问题主要围绕如何处理这样的场景。我认为在 Laravel 中使用队列功能无法完成我需要它做的事情。你能看到我缺少的方法吗?我真的需要在非框架脚本上生成一个守护进程来处理这个问题吗?
非常感谢您的意见!
最佳答案
另一种方法是 Laravel 应用程序上的监听器使用 JSON 消息并对其进行操作。
可以使用诸如 https://github.com/bschmitt/laravel-amqp 之类的包来创建队列监听器(Laravel 的通用 AMQP 桥)或 https://github.com/needle-project/laravel-rabbitmq (更专门用于 RabbitMQ 的桥)。
然后,队列使用者读取 JSON 有效负载,将有效负载保存为适当的数据,然后决定在 Laravel 应用程序中分派(dispatch)哪些作业作为结果,由 https://github.com/vyuldashev/laravel-queue-rabbitmq 处理。包。
这两个应用程序仍然使用纯 JSON 进行通信,而不是使用包含序列化作业类的面向 Laravel 的 JSON。
关于php - Laravel Queue Worker、RabbitMQ 和远程生成的运行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44888624/