首页 > 解决方案 > 编写自定义 Laravel 队列驱动程序

问题描述

我正在编写用于与 MQTT 交互的自定义​​ Laravel 5.5 队列驱动程序。我正在使用Mosquitto MQTT 扩展

关于如何实现这一点的文档并不多。让我陷入困境的是理解预期的有效载荷。当我的pop()方法被调用并且我的MqttJob类正在被处理时,我收到一个关于缺少索引的错误'job'。我已经尝试查看各种其他驱动程序的实现,包括 Redis、Beanstalkd 和其他自定义驱动程序,如KafkaRabbitMQ,但仍然看到它们的实现在哪里遵循这个预期的有效负载结构。

如果有人对队列、工作人员和工作的交互方式有经验或了解,将不胜感激。

这篇文章与我要问的类似。

更新我实现了该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()

标签: laravellaravel-5mqttmessage-queuelaravel-5.5

解决方案


推荐阅读