通常,Laravel期望它将以后使用的所有消息排队。它创建一个带有job
属性的有效载荷,该属性稍后指示如何处理队列消息。当您使用Laravel将工作排入队列,然后再使用Laravel处理它们时,效果很好!
但是,我有一些非Laravel应用程序将json消息发布到队列中。我需要Laravel来接收这些消息并进行处理。
我可以编写命令总线作业来处理消息,但是我一直无法弄清楚如何告诉queue:work
将消息发送到我的特定处理程序。
Laravel似乎有一个坚决的假设,即要求它处理的任何队列消息都将按照其期望的方式进行正确的格式化,序列化和结构化。
我如何让Laravel拾取这些原始的json有效负载,忽略结构(没有什么要理解的结构),然后将有效负载交给我的处理程序?
例如,如果我有一个类似于以下的队列消息:
{
"foo" : "bar"
}
同样,Laravel在这里没有任何检查或了解的内容。
但是我有一个作业处理程序,知道该如何处理:
namespace App\Jobs;
class MyQueueHandler {
public function handle($payload) {
Log::info($payload['foo']); // yay!
}
}
现在,如何获取
queue:work
和queue:listen
来将所有有效负载简单地移交给该App\Jobs\MyQueueHandler
处理程序,在这里我可以自己完成其余的工作? 最佳答案
如果您使用的是Laravel 5.6+,请查看this package。
关于php - 在Laravel中使用原始json队列消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32505501/