Laravel如何整合Workerman命令行监听MQTT(laravel,mqtt,workerman,编程语言)

时间:2024-05-03 05:07:02 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    Laravel%E5%A6%82%E4%BD%95%E6%95%B4%E5%90%88Workerman%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%9B%91%E5%90%ACMQTT

现代PHP开发composer应该是必不可少的了,基本上大点的框架都会推荐使用composer,所以这里以composer来安装Laravel,命令如下:

composer create-project --prefer-dist laravel/laravel workerman-mqtt ‘5.5.*’

Laravel指定版本为5.5.x,这是目前(2019.08)的唯一LTS版本,考虑到企业项目的稳定及安全,还是选择LTS。项目名称为workerman-mqtt,专门用这个来测试MQTT。

如果composer太慢,可以考虑使用阿里云等国内composer源加快安装速度。

上面说了,用composer安装workerman-mqtt很简单,只需要一行命令:

既然是使用Laravel配合workerman监听MQTT,那artisan自然是不二的选择了,能使用Laravel的组件,还能使用artisan命令管理监听进程。创建相关命令文件:

然后编辑生成的workerman-mqtt/app/Console/Commands/mqtt.php文件,将文件改成如下内容:

然后到项目根目录下面的.env文件添加下面几项:

其中,onConnect里面的subscribe后面是需要监听的topic,当收到新消息的时候,onMessage里面的topic是消息的topic,data就是具体的消息信息了,有了这两个,我们可以在onMessage里面写我们的业务逻辑,当然也可以引入Laravel框架本身的一些组件,比如数据库、日志等,也可以与别的服务比如说Redis、消息队列MQ等配合进行缓存或者使用消息队列等。

和别的artisan命令差不多,直接命令行运行就好了:

注意别忘了后面的start,这是workerman本身需要的启动参数。

因为workerman设定是常驻内存,正常情况下是在持续在监听的,即使程序有bug被终止,workerman也会自动新建一个进程进行处理。

如果生产环境需要长期监听处理MQTT数据,建议使用systemctl等命令来管理。

虽然到上面为止已经可以作为客户端在服务端监听MQTT的消息,但是这里有个不足之处就是,我到目前没找到办法单独调用这个库在处理实际业务逻辑的时候publish消息到指定的topic。

还有一点是,使用这个库,不能同时运行两个使用了这个库的artisan命令,会有如下提示:

这个问题搜遍了全网也没发现有解决的办法。虽然可以通过Timer类添加定时功能通过另类办法解决,但是在需要效率的情况下,这并不是最优解,如果有别的方案,建议还是不要选择PHP作为服务端来处理MQTT相关业务。

本文:Laravel如何整合Workerman命令行监听MQTT的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Go Http Server框架如何快速实现下一篇:

9 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18