laravel - 编写自定义 Laravel 队列驱动程序
问题描述
我正在编写用于与 MQTT 交互的自定义 Laravel 5.5 队列驱动程序。我正在使用Mosquitto MQTT 扩展。
关于如何实现这一点的文档并不多。让我陷入困境的是理解预期的有效载荷。当我的pop()
方法被调用并且我的MqttJob
类正在被处理时,我收到一个关于缺少索引的错误'job'
。我已经尝试查看各种其他驱动程序的实现,包括 Redis、Beanstalkd 和其他自定义驱动程序,如Kafka和RabbitMQ,但仍然看到它们的实现在哪里遵循这个预期的有效负载结构。
如果有人对队列、工作人员和工作的交互方式有经验或了解,将不胜感激。
这篇文章与我要问的类似。
更新我实现了该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()
。
解决方案
推荐阅读
- html - Firebase - 验证用户,然后写入数据库?
- python - 字节的可读十六进制转储
- php - 使用 100 天 php 针对特定数量的随机浮动
- android - 如何使用 SavedStateHandle 和导航安全参数
- python - 在 python selenium 无头模式下不会执行 for 循环
- shell - 就地格式化文件特定列中的数字
- android - 谷歌地图自定义标记方向点
- javascript - 单击另一个可触摸不透明度并将其中的文本设置为文本输入中输入的值时,如何制作可触摸不透明度
- android - 从服务器获取数据后在 android 中存储数据的最佳方式
- amazon-web-services - 具有自定义授权器的无服务器 lambda 单元测试处理程序