php - Laravel Queue Worker、RabbitMQ 和远程生成的运行作业

标签 php laravel rabbitmq

我将承认轻微的 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/

相关文章:

rabbitmq - @RabbitListener 用于多个类中的同一个队列

具有本地集群的 RabbitMQ 管理插件

java - 我可以使用 Spring Integration 通过 RabbitMQ 进行同步/阻塞调用吗?

php - 使用 Codeigniter 在文本框中显示最后插入的记录

php - 将文档总数除以包含词干的文档数

用于 Windows 的 PHP 编译器

php - 从外部 FTP 服务器读取 > 1GB GZipped CSV 文件

php - PayPal IPN - 不能沙箱

javascript - 如何将日期选择器值传递给 Controller ​​?

php - 我无法从 Laravel 中的请求 AJAX 检索数据