我将通过承认轻微的睡眠剥夺来做到这一点。
设置如下:
API端点(服务器A)接收来电,并将其添加到RabbitMQ服务器(服务器B)上的特定队列。
RabbitMQ(服务器B)只是一个RabbitMQ队列服务器。没什么,没什么。
Laravel安装(服务器C)是我们实际的Laravel安装,它用于查找特定队列上的作业并使用它们执行操作。
我们在Laravel安装中有一个RabbitMQ包,它允许在RabbitMQ连接上使用常规的Laravel Queue机制。
我遇到的问题是我们可以为队列生成一个工作者 - 但是因为我们没有生成通过$job
类的作业(作业内容本身最常见)一个JSON数组),Laravel安装不知道如何处理这项工作。
所以我的问题主要围绕如何处理这样的场景。我认为在Laravel中使用Queue功能不会做我需要它做的事情。你能看到我失踪的方法吗?我真的需要在非框架脚本上生成一个守护进程来处理这个吗?
非常感谢您的投入!
答案 0 :(得分:1)
解决方案确实是将作业代码复制到发布作业的作业代码上。代码不需要作业实际运行所需的每个依赖项,因为它只是从推动它的那个序列化作业。
答案 1 :(得分:0)
另一种方法是在您的Laravel应用程序上使用侦听器,从而消耗JSON消息并对其进行处理。
可以使用诸如https://github.com/bschmitt/laravel-amqp(用于Laravel的通用AMQP桥)或https://github.com/needle-project/laravel-rabbitmq(用于RabbitMQ的专用桥)之类的包来创建队列侦听器。
然后,队列使用者读取JSON有效负载,将有效负载保存为适当的数据,然后确定由https://github.com/vyuldashev/laravel-queue-rabbitmq包处理的Laravel应用程序中要分派的作业。
这两个应用程序仍然使用纯JSON进行通信,而不是包含序列化作业类的面向Laravel的JSON。