我正在编写一个定制的Laravel 5.5队列驱动程序以与MQTT进行交互。我正在使用Mosquitto MQTT extension。
关于如何实现此功能的文档并不多。我遇到的问题是了解预期的有效负载。当我的pop()
方法被调用并且我的MqttJob
类正在处理时,我收到关于缺少索引'job'
的错误。我尝试查看各种其他驱动程序的功能,包括Redis,Beanstalkd和其他自定义驱动程序,例如Kafka和RabbitMQ,但是仍然看到它们的实现遵循预期的有效负载结构的地方。>
如果任何人有经验或了解队列,工人和工作如何互动,将不胜感激。
这个post与我要问的类似。
更新,我将getRawBody()
方法实现为:
public function getRawBody()
{
return json_encode([
'job' => 'Illuminate\\Queue\\CallQueuedHandler@call',
'data' => [
'commandName' => get_class($this),
'command' => serialize(clone $this),
],
]);
}
但是现在出现以下错误:
local.ERROR: Serialization of 'Closure' is not allowed {"exception":"[object] (Exception(code: 0): Serialization of 'Closure' is not allowed
我不确定MqttJob
的哪个属性是闭包。 clone
应该正在执行浅表复制,并且我还没有实现__clone()
方法。