Laravel Queue Worker,RabbitMQ和远程生成的作业

时间:2017-07-03 14:52:20

标签: php laravel rabbitmq

我将通过承认轻微的睡眠剥夺来做到这一点。

设置如下:

API端点(服务器A)接收来电,并将其添加到RabbitMQ服务器(服务器B)上的特定队列。

RabbitMQ(服务器B)只是一个RabbitMQ队列服务器。没什么,没什么。

Laravel安装(服务器C)是我们实际的Laravel安装,它用于查找特定队列上的作业并使用它们执行操作。

我们在Laravel安装中有一个RabbitMQ包,它允许在RabbitMQ连接上使用常规的Laravel Queue机制。

我遇到的问题是我们可以为队列生成一个工作者 - 但是因为我们没有生成通过$job类的作业(作业内容本身最常见)一个JSON数组),Laravel安装不知道如何处理这项工作。

所以我的问题主要围绕如何处理这样的场景。我认为在Laravel中使用Queue功能不会做我需要它做的事情。你能看到我失踪的方法吗?我真的需要在非框架脚本上生成一个守护进程来处理这个吗?

非常感谢您的投入!

2 个答案:

答案 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。