Linux MQTT环境搭建详细步骤

news/2024/11/3 5:37:19/

关于MQTT的安装之前写过一次,但是不够详细,这里重新补充一下,以后用到的时候更方便。

1. 安装MQTT服务器

上网搜索apache activemq,找到它的官网https://activemq.apache.org/。

 

 

下载Linux版本。写文档时版本为ActiveMQ 5.18.1 Release

解压后进入目录,运行:./bin/activemq console

即可启动服务

 

无法启动,java版本不对。安装对应的java版本。

$sudo apt install openjdk-11-jdk

然后再次启动服务

2. 安装MQTT 客户端

在https://github.com/eclipse/paho.mqtt.c下载安装包并解压,进入目录。

$make

报错,然后sudo apt install libssl-dev

$make

成功

$make install

注意,这里直接make,不是去build文件夹下make。

3. 测试是否安装成功,使用自带的示例

发布程序示例MQTTClient_publish.c:

$cd src/samples/

在mqtt工程的src/samples目录下,打开MQTTClient_publish.c。

通过修改#define ADDRESS设置服务器地址。

$vi MQTTClient_publish.c

#define ADDRESS     "tcp://mqtt.eclipseprojects.io:1883"更改为

  #define ADDRESS     "tcp://172.16.67.130:1883"

然后保存退出。

172.16.67.130是步骤1服务所在的ip,这里与代码都在同一个机器上。

修改#define PAYLOAD 设置消息内容。(这里保持不变)

修改#define TOPIC修改发布主题。(这里保持不变)

订阅程序示例MQTTClient_subscribe.c:

在mqtt工程的src/samples目录下,打开MQTTClient_subscribe.c

通过修改#define ADDRESS设置服务器地址。

$vi MQTTClient_subscribe.c

#define ADDRESS     "tcp://mqtt.eclipseprojects.io:1883"更改为

  #define ADDRESS     "tcp://172.16.67.130:1883"

然后保存退出

修改#define TOPIC修改订阅主题。主题与发布者一致时,可收到发布的消息。(这里保持不变)

$cd ../../

$make

$cd build/output/samples

回到paho.mqtt.c的目录下,然后重新make,在build/output/samples会有生成文件,执行MQTTClient_subscribe,然后在另一个终端执行MQTTClient_publish,就可以看到通信。

 


http://www.ppmy.cn/news/691092.html

相关文章

spring.profiles的使用详解

本文来说下spring.profiles.active和spring.profiles.include的使用与区别 文章目录 业务场景spring.profiles.active属性启动时指定 spring.profiles.include属性配置方法配置的位置配置区别 业务场景 我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到…

【强化学习】常用算法之一 “PPO”

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

SQLServer Update多表联合更新的方法

update table1 set apple t2.pear from table1 t1,table2 t2 where t1.tsno t2.tsno

一条update语句更新多条sql记录

要求:将dispatch表中关联的用户名更新到dispatch表中。 UPDATE xn_m_dispatch disp LEFT JOIN (SELECT dis.id AS dispatchID,u.name AS userName FROM xn_m_dispatch dis LEFT JOIN xn_m_logistics_order lo ON lo.iddis.logistics_order_id LEFT JOIN xn_m_compa…

MyBatis更新语句

MyBatis更新语句 <update id"updateArea" parameterType"com.example.applet.entity.Area" >update tb_area<set><if test"areaName!null">area_name#{areaName},</if><if test"priority!null">prior…

SQL Server连表进行update

update table1 set field b.field from table1 ainner join table2 b on b.foreign_id a.id -- 范围 where a.id in((select a.id from table1 a, table2 b where a.id b.foreign_id and b.time>2022))

MySQL更新数据语句

目录 修改单表中的记录修改多表中的记录 修改单表中的记录 update 表名 set 列新值&#xff0c;列新值 where 筛选条件 执行顺序 1 3 2 修改多表中的记录 s192语法: update 表1 别名&#xff0c;表2 别名 set 列值......... where 连接条件 and 筛选条件s199语法: upd…

SQL SERVER 中 UPDATE 与 INNER JOIN 结合的批量更新语句示例

参考 &#xff1a; https://stackoverflow.com/a/9589124 UPDATE R SET R.status 0 FROM dbo.ProductReviews AS R INNER JOIN dbo.products AS P ON R.pid P.id WHERE R.id 17190 AND P.shopkeeper 89137;