中间件:SpringBoot-JAVA整合MQTT通信

news2024/7/4 4:41:19

1、环境Win10;

2、JDK 1.8;

3、SpringBoot 2.7.5;

4、MQTTV3 1.2.5

5、EMQX服务器本地安装使用参考:MQTT学习记录(一、Windows)_我也不清楚的博客-CSDN博客_mqtt默认密码

6、MQTTX 官方客户端可视化工具安装参考:MQTT学习记录(一、Windows)_我也不清楚的博客-CSDN博客_mqtt默认密码

7、源码下载: 资源下载中  SpringBoot项目 JAVA MQTT通信

 

本例为后端整合MQTT通信,也可以前端直接使用,方法参考:中间件:前端JS整合MQTT通信_我也不清楚的博客-CSDN博客 

一、EMQX服务器本地安装使用介绍

参考:MQTT学习记录(一、Windows)_我也不清楚的博客-CSDN博客_mqtt默认密码

 

 

二、MQTTX可视化操作工具安装使用

参考:MQTT学习记录(一、Windows)_我也不清楚的博客-CSDN博客_mqtt默认密码

三、SpringBoot JAVA客户端

1、项目结构如下:

2、引用 org.eclipse.paho.client.mqttv3 进行MQTT通信,POM.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>mqtt_client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mqtt_client</name>
    <description>mqtt_client</description>
    <properties>
        <java.version>8</java.version>
        <mqttv3.version>1.2.5</mqttv3.version>
        <fastjson.version>1.2.78</fastjson.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- mqtt-->
        <dependency>
            <groupId>org.eclipse.paho</groupId>
            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
            <version>${mqttv3.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

3、application.yml

server:
  port: 8088
spring:
  # mqtt 配置
  mqtt:
    use-flag: true                             # 是否启用MQTT
    username: admin                            # 账号
    password: public                           # 密码
    host-url: tcp://127.0.0.1:11883            # mqtt连接tcp地址
    client-id: ${random.int}                   # 客户端Id,不能相同,采用随机数 ${random.value}
    default-topic: mqttDemoTopic               # 默认主题
    default-qos: 1                             # 消息发送方式
    default-retained: false                    # 是否保留
    timeout: 30                                # 超时时间
    keepalive: 30                              # 保持连接
    clearSession: true                         # 清除会话(设置为false,断开连接,重连后使用原来的会话 保留订阅的主题,能接收离线期间的消息)

MQTT参数含义如上代码中备注,MQTT连接使用tcp协议,以EMQX服务器中tcp协议端口为标准,如本例中EMQX的tcp协议MQTT端口为1883 / 11883 则,项目作为客户端可使用这两个端口。

 4、implements ApplicationRunner 使项目启动时加载run方法,调用emqxClient.connect();进行连接;

 5、发布主题(如果主题不存在,则会新建),订阅已有主题

 6、模拟测试手动调用发布主题,订阅主题

 7、消息回调,即订阅某主题后,另外一方客户端或硬件传感器系统给中间件EMQX的主题发送消息时,JAVA客户端在订阅此主题的前提下将自动接收消息

四、启动测试

1、项目启动 默认创建 / 订阅 默认主题

服务器端可以看到状态

2、模拟在MQTTX客户端发送消息,可以在JAVA客户端收到消息

3、模拟在JAVA客户端新建 / 发布新主题

 4、MQTTX也订阅新主题,在JAVA客户端再次发布

 

5、取消订阅某个主题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ae:段落面板

◆ ◆ ◆段落面板Ae菜单&#xff1a;窗口/段落Window/Paragraph快捷键&#xff1a;Ctrl 7对于点文本&#xff0c;默认一行为一个段落。每按一次回车键&#xff0c;就多出一个段落。对于段落文本&#xff0c;一段可能有多行&#xff0c;具体取决于定界框的尺寸。末尾有回车符…

路由基础:

1、路由中包含以下信息&#xff1a; 目的网络 掩码 出接口 下一跳 对路由条目的管理实际上就是路由器管理、维护路由信息的具体实现&#xff0c;路由表中只会保存“最优”路由。 2、路由获取方式&#xff1a; 直连 静态 动态 * 直连&a…

RHCSA 第四天笔记

文本内容在命令行的操作 文本过滤&#xff1a;grep 文本三剑客&#xff1a; gerp sed awk grep 选项 关键的字符串 文件 grep root /etc/passwd 查找root(交集查找&#xff09; ^ 以……为开头 $ 以……为结尾 Grep ^root /etc/passwd …

MATLAB | MATLAB不会画图?官方团队来教你

让我看看是哪个小傻瓜还没用过MATLAB官方gallery&#xff0c;常见的图直接MATHWORKS搜索一下就能找到&#xff0c;一些有意思的组合图&#xff0c;以及一些特殊属性的设置MATHWORKS官方是有专门去整理的&#xff0c;虽然一些很特殊的图还是没有(哈哈哈弦图小提琴图啥的官方没有…

第004课 - 项目微服务架构图

文章目录 项目架构图项目架构图 外网部署就是面向公众访问的,部署前端项目。 可以有手机app,也可以有web网站。 内网部署后端系统。 客户端发送请求,请求是先来到我们的nginx集群。 nginx将请求转交给我们的后台服务。 nginx是先将请求转交给api网关。 api网关我们使用…

论文浅尝 | 通过依赖掩码语法引导预训练提升关系抽取

笔记整理&#xff1a;王大壮链接: https://aclanthology.org/2022.findings-acl.147v1.pdf动机关系抽取是一项重要的自然语言处理任务&#xff0c;旨在预测给定文本中两个给定实体之间的关系。其中&#xff0c;对文本上下文信息的良好理解对于实现出色的模型性能至关重要。在不…

CMMI之项目规划

项目规划&#xff08;Project Planning&#xff09;的目的是为项目的研发和管理工作制定合理的行动纲领&#xff08;即《项目计划》&#xff09;&#xff0c;以便所有相关人员按照该计划有条不紊地开展工作。 为了避免词义混淆&#xff0c;这里把动词Planning译为规划&#xf…

用 Python 写一个经典飞机大战

当年微信 5.0 发布时&#xff0c;首页被设置成了一款新推出的小游戏&#xff0c;它就是微信版飞机大战&#xff0c;游戏一经推出便是火爆异常&#xff0c;铅笔画风格的游戏界面也受到了很多人的喜欢。 最近重温了一下这款小游戏&#xff0c;尽管时隔多年&#xff0c;但无论是游…

双向循环神经网络(隐马尔可夫模型)

在双向循环神经网络中&#xff0c;每个时间步的隐状态由当前时间步的前后数据同时决定。 双向循环神经网络与概率图模型中的“前向-后向”算法具有相似性。 双向循环神经网络主要用于序列编码和给定双向上下文的观测估计。 由于梯度链更长&#xff0c;因此双向循环神经网络的…

网站Nginx服务安装https免费证书配置一条龙流程

搜索小程序 成语典故查询 Let’s Encrypt 安装https免费证书配置 1.http 是一个传输网页内容的协议,比如你看到的 http 开头的网站 www.163.com&#xff0c;其网页上的文字、图片、 CSS 、 JS 等文件都是通过 http 协议传输到我们的浏览器&#xff0c;然后被我们看到。 而 …

生物药、创新药、仿制药新项目立项调研、评估的重要手段

当前,随着我国制药行业与国际的高速接轨,研发和产业环境也迎来了崭新的局面。制药企业的核心竞争力是研发&#xff0c;而研发中的立项是直接影响新药开发成功与否的关键因素&#xff0c;那么如何有效的规避开发的风险&#xff0c;立项论证显得极其重要&#xff0c;也是每个医药…

车道线标注案例分析

车道线标注属性细分规则确认点 常见车道线的标注分类属性包括5个维度&#xff1a;颜色、线型、线数、车道、职能 颜色标签&#xff1a;如白色、黄色、蓝色、橙色、黄白色等 线型标签&#xff1a;如实线、虚线、锯齿线等 线数标签&#xff1a;单线、双线&#xff0c;特殊情况…

【高阶数据结构】二叉树的非递归遍历

&#x1f308;欢迎来到数据结构专栏~~二叉树的非递归遍历 (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自…

大型家政服务平台带小程序端源码 家政服务小程序源码

1. 开发语言&#xff1a;PHP 2. 数据库&#xff1a;MySQL 3.小程序端&#xff1a;Uniapp 4. 带调试视频 5. 可付费调试运行服务 后台功能&#xff1a; 首页、服务管理、商品管理、订单管理、社区管理、城市代理/运营、 营销活动、会员管理、师傅管理、商家/门店、财务管理、合…

警惕!不要让自己的基本功丢失

写这篇文章的缘由是来自己最近我作为面试官的一场面试&#xff0c;我司是。Net stack&#xff0c;这场面试的岗位是后端高级开发。候选人是一个 12 年工作经验的候选人&#xff0c;简历看起来很 nice&#xff0c;国内某 TOP 高校 cs 专业本科毕业&#xff0c;有在大厂甲方外企的…

浙大MBA的录取由初试和复试两面组成

今年7月收到了来自浙大的录取通知书&#xff0c;在拿到录取通知书的那一刻&#xff0c;觉得这一年多备考的艰辛都是值得的。 关于本人情况&#xff1a;2021年备考&#xff0c;刚到而立之年&#xff0c;2012年毕业于一所普通的本科院校&#xff0c;在校期间成绩倒是还好&am…

Vue3 中选项式下的侦听器

目录前言&#xff1a;watch 侦听的分类&#xff1a;函数式的侦听器对象式侦听器创建侦听器停止侦听器总结&#xff1a;前言&#xff1a; 今天小编给大家讲解一下&#xff0c;Vue3 中选项式下的侦听器。 我正在参加 2022年「博客之星」年度总评选&#xff0c;请大家帮我支持一下…

【服务器数据恢复】XFS文件系统分区丢失怎么恢复数据?

服务器数据恢复环境&#xff1a; 磁盘柜RAID卡搭建riad5磁盘阵列; Linux操作系统&#xff1b; 总共一个LUN&#xff0c;划分两个分区;&#xff1a;sdc1分区通过LVM扩容的方式加入到了root_lv中&#xff0c;sdc2分区格式化为XFS文件系统。 服务器故障&#xff1a; 用户为服务器…

本科生学深度学习一轻松搭建强化学习环境,gym的安装

OpenAI Gym 是一个工具包&#xff0c;提供了广泛的模拟环境&#xff0c;也是强化学习的环境&#xff0c;因为想学强化学习&#xff0c;所以需要搭建一个环境&#xff0c;之前一直在代码层面&#xff0c;还是得能看到&#xff0c;比较直观 今天看下怎么安装这个环境 1、官方网站…

【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)

背景 本文主要讲述的是如何实现动态切换数据源&#xff0c;数据源信息是存储在数据库表里&#xff0c;与在配置文件中写好数据库信息然后用DS("XX")注解不同。 目录 前言 一、准备工作 1.依赖 2.数据库表&#xff08;脚本&#xff09; 3.配置文件 4.自定义注解C…