文章目录

  • 一、简介
  • 二、mosquitto安装与使用
    • 1、mosquito的安装
    • 2、mosquitto的结束与启动
    • 3、订阅发布测试
  • 三、遇到的问题
    • 1、安装mosquitto-2.0.9
    • 2、安装mosquitto-1.4.5
    • 3、缺少 ares 库
    • 4、使用过程中找不到libmosquitto.so.1

一、简介

  为了学习MQTT,在树莓派上使用mosquito进行测验。

二、mosquitto安装与使用

1、mosquito的安装

# 下载mosquito-1.5.5     GitHub:https://github.com/eclipse/mosquitto
wget -c https://github.com/eclipse/mosquitto/archive/v1.5.5.tar.gz
# 解压
tar zxvf v1.5.5.tar.gz
# 进入mosquitto-1.5.5
cd mosquitto-1.5.5
# 安装mosquito编译需要的包
sudo apt install g++ libssl-dev libc-ares-dev uuid-dev xsltproc docbook-xsl
# 编译
make
# 安装
sudo make install

2、mosquitto的结束与启动

# 查看mosquitto的进程
ps -aux | grep mosquitto
# 杀死进程
kill -9 1285
# 启动
mosquitto -c /etc/mosquitto/mosquitto.conf -d
# 或
mosquitto -v

3、订阅发布测试

  打开三个终端,一个终端打开mosquitto服务端 ,一个终端订阅主题,最后一个终端发布消息。

#打开mosquitto服务端
mosquitto -v
#【-v】打印更多的调试信息                                    #订阅主题 demo
mosquitto_sub -v -t demo
#【-t】指定主题
#【-v】打印更多的调试信息#发布消息
mosquitto_pub -t demo  -m "hello world!"
#【-t】指定主题
#【-m】指定消息内容

三、遇到的问题

1、安装mosquitto-2.0.9

  未安装成功,编译时始终缺少CJSON.h头文件。

安装cJSON:

#没有cmake,所以需要先安装cmake
pi@raspberrypi:~ $ sudo apt install cmake
# 下载cJSON源码
pi@raspberrypi:~ $ git clone https://github.com/DaveGamble/cJSON.git
# 进入 cJSON目录
pi@raspberrypi:~ $ cd cJSON/
# cJSON中创建build目录
pi@raspberrypi:~/cJSON $ mkdir build# 进入build目录
pi@raspberrypi:~/cJSON $ cd build
# cmake编译
pi@raspberrypi:~/cJSON/build $ cmake ..
# make编译
pi@raspberrypi:~/cJSON/build $ make
# 编译成功进行安装
pi@raspberrypi:~/cJSON/build $ sudo make install
# 默认情况下,cJSON的头文件安装到/usr/local/include/cjson/目录下,因此编译程序的时候如果用到cJSON.h这个头文件会显示不存在
# 动态库文件安装到/usr/local/lib/目录下,相关cmake文件安装到/usr/local/lib/cmake/cJSON/目录下
# 所以我们需要将/usr/local/include/cjson/cJSON.h移动到/usr/local/include/目录下
pi@raspberrypi:~ $ sudo mv /usr/local/include/cjson/cJSON.h  /usr/local/include/

安装cmake:

# 安装cmake
pi@raspberrypi:~ $ sudo apt install cmake
# 查看cmake的位置
which cmake
# 查看cmake的版本
cmake --version
# 卸载cmake
sudo apt-get autoremove cmake


  但即使成功安装,最后仍旧报错!

2、安装mosquitto-1.4.5


  未安装成功,编译时该结构体始终错误。

3、缺少 ares 库

# 下载源码:
wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz
# 解压 :
tar -zxf c-ares-1.10.0.tar.gz
# 进入目录
cd c-ares-1.10.0
# 配置
./configure
# 安装
sudo make install

4、使用过程中找不到libmosquitto.so.1

error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory

解决方法:修改libmosquitto.so位置

# 创建链接
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
# 更新动态链接库
sudo ldconfig

树莓派使用mosquito实现订阅发布相关推荐

  1. MQTT学习之树莓派安装mosquito 服务器

    MQTT学习之树莓派安装mosquito 服务器 1 安装所需的依赖库 sudo apt-get install libssl-dev libc-ares-dev uuid-dev g++ 2 安装源 ...

  2. 深入biztalk消息以及消息订阅发布路由机制(二)-消息订阅【转】

    一.消息订阅 订阅消息的主体叫订阅服务器,订阅服务器是可以订阅并消费消息的服务,可以作为订阅服务器的服务类型目前有四类,在BizTalkMgmtDb管理数据库中的adm_ServiceClass的Na ...

  3. 4che3 scu发送超时设置_Redis实现订阅发布与批量发送短信

    1 什么是redis订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息.直接点,你可以理解为我关注了你,你发布了信息,文章等,我就可以立 ...

  4. python 实现redis订阅发布功能

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  5. Java设计模式-观察者模式(订阅发布模式)

    Java设计模式-观察者模式(订阅发布模式) 一起来看 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持吧!! ...

  6. redis基础之订阅发布、主从复制和事务(四)

    前面已经学习了redis的基本的命令行操作和数据类型,下面开始redis一些有趣的功能. 订阅和发布机制 定义:发布者相当于电台,订阅者相当于客户端,客户端发到频道的消息,将会被推送到所有订阅此频道的 ...

  7. RabbitMQ下的生产消费者模式与订阅发布模式

    所谓模式,就是在某种场景下,一类问题及其解决方案的总结归纳.生产消费者模式与订阅发布模式是使用消息中间件时常用的两种模式,用于功能解耦和分布式系统间的消息通信,以下面两种场景为例: 数据接入    假 ...

  8. python学习之-- redis模块管道/订阅发布

    redis 模块操作剩余其他常用操作 delete(*names):删除任意的数据类型 exists(name):检测redis的name是否存在 keys(pattern='*'):根据模型获取re ...

  9. jquery订阅发布插件代码草稿,为jquery扩展jquery.publish,jquery.subscribe方法

    jquery订阅发布插件代码草稿! jquery订阅发布插件代码草稿,为jquery扩展jquery.publish,jquery.subscribe方法 --- jquery订阅发布插件代码草稿 & ...

最新文章

  1. X-Forwarded-For 会少记录一次代理服务器的IP
  2. 关于我国科技创新研究,以及创新成果的转化的思考
  3. part01.04 事件
  4. 把list清空和赋值null对内存释放的区别
  5. 数学建模学习笔记之相关系数
  6. assert.equal()
  7. Error Code: 1054. Unknown column 'xxx' in 'field list'
  8. 企业微信第三方应用添加好友
  9. SQL中where in的用法
  10. Azure Messaging
  11. java中abstract详解
  12. linux服务器看门狗服务,服务器watchdog看门狗的理解
  13. 基于Matlab仿真无源雷达传感器和雷达干扰(附源码)
  14. RTKLIB Manual 之 Appendix B File Formats
  15. 行波进位加法器C语言,行波进位加法器.doc
  16. matlab 傅里叶变换 音频,傅里叶变换进行音频处理.pdf
  17. kong(微服务网关的简单部署)(一)
  18. 对软件行业的一些看法
  19. html j红绿灯转换倒计时的代码,红绿灯倒计时.html
  20. C1任务01植物大战僵尸修改

热门文章

  1. Javase_1.1fundation
  2. tiny4412 linux-4.2 移植(九)USB 2.0 host框架(4)支持otg
  3. redis hset java_Redis Hset 命令
  4. 国瀚实业|个人理财需要掌握哪些知识
  5. 【财务会计学习笔记】——财务的三大报表
  6. 中山大学南方学院计算机考点,诚信应考,中山大学南方学院电气与计算机工程学院在行动!...
  7. java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件))
  8. Git svn 混用实践
  9. 摄像机在宇视网络视频录像机上频繁上下线如何排查
  10. ffmpeg修复视频