编写自定义Laravel队列驱动程序

时间:2019-02-20 11:08:37

标签: laravel laravel-5 mqtt message-queue laravel-5.5

我正在编写一个定制的Laravel 5.5队列驱动程序以与MQTT进行交互。我正在使用Mosquitto MQTT extension

关于如何实现此功能的文档并不多。我遇到的问题是了解预期的有效负载。当我的pop()方法被调用并且我的MqttJob类正在处理时,我收到关于缺少索引'job'的错误。我尝试查看各种其他驱动程序的功能,包括Redis,Beanstalkd和其他自定义驱动程序,例如KafkaRabbitMQ,但是仍然看到它们的实现遵循预期的有效负载结构的地方。

如果任何人有经验或了解队列,工人和工作如何互动,将不胜感激。

这个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()方法。

0 个答案:

没有答案