SpringBoot 使用 EMQX

news/2025/2/12 10:51:45/

一、SpringBoot服务器端

1. 在centos搭建 EMQX服务

2. 创建API密码

3. 在SpringBoot 的yml中添加mqqt的配置

#配置
emqx:ip: 47.109.49.176port: 18083api: xxxxxxxx      (自己的api)secret: xxxxxxxxx  (自己的secret)

4. 因为服务端在推送消息给 EMQX时,需要对应的api标识和secret权限, 就先定义一个类,通过ConfigurationProperties注解获取配置文件中的属性

@Data
@Component
@ConfigurationProperties("emqx")
public class EmqConfig {private String ip;private int port;private String api;private String secret;
}

5. EMQX工具类


@Component
public class EmqApi {@Autowiredprivate EmqConfig emqConfig;             //EMOX的实体类,可以直接获取配置文件的属性值private final String apiVer = "/api/v5"; //使用http实现推送api的版本//基础请求地址 http://172.0.0.1:8080/api/v5private String getBaeUrl() {return "http://" + emqConfig.getIp() + ":" + emqConfig.getPort() + apiVer;}/*服务端发起请求:(1)拼接完成的路径: http://172.0.0.1:8080/api/v5/public (public表示推送一条消息)(2)设置请求方式:get、post、delete、put(3)设置权限:用户名、密码* */private HttpRequest getRequest(String url) {HttpRequest request = HttpRequest.of(getBaeUrl() + url);request.setMethod(Method.POST);request.basicAuth(emqConfig.getApi(), emqConfig.getSecret());return request;}/*将请求和封装放在一起(已经重载,可以传字符串,也可以传对象)* */private HttpResponse getResponse(String url, String body) {return getRequest(url).body(body).execute();}private HttpResponse getResponse(String url, Dict dict) {return getResponse(url, JSONUtil.toJsonStr(dict));}/*发送消息的方法 */public String publish(String topic, String payload) {Dict dict = Dict.create();dict.set("topic", topic);     //订阅频道标识dict.set("payload", payload); //消息内容dict.set("qos", 2);           //消息仅传送一次。不会重复、不会丢失HttpResponse response = getResponse("/publish", dict);return response.body();}/*发送消息的方法 */public String publish(String topic, Map map) {return publish(topic, JSONUtil.toJsonStr(map));}
}

 二、前端uniapp 后面补


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

相关文章

嵌入式Linux开发实操(十五):nand flash接口开发

# 前言 flash memory,分NAND和NOR: 如果说nor flash有个特点就是能执行代码,NOR并行接口具有地址和数据总线,spi flash更是主要用于存储代码,SPI(或QSPI)NOR代码可就地执行(XiP),一般系统要求flash闪存提供相对较高的频率和数据缓存的clocking。而nand flash主要用于…

【2023百度之星备赛】码蹄集 BD202301 公园(BFS求最短路)

题目 https://www.matiji.net/exam/brushquestion/1/4347/179CE77A7B772D15A8C00DD8198AAC74?from1 题目大意: 给定一个无向图,有两个人往同一个目的地走,分别消耗体力TE、FE。如果他们到某个点汇合了,然后一起走向目的地&…

Unity——协程(Coroutine)

本文为问GPT所得 一、在Unity中,协程到底是个啥 在Unity中,协程(Coroutine)是一种特殊的函数,用于在一段时间内暂停执行,并在稍后的时间点继续执行。通常情况下,我们在代码中通过调用协程来实现…

大集合按照指定长度进行分割成多个小集合,用于批量多次处理数据

📚目录 拆分案例拆分的核心代码 通常我们对集合的更新或者保存都需要用集合来承载通过插入的效率,但是这个会遇到一个问题就是你不知道那天那个集合的数量可能就超了,虽然我们连接数据库进行批量提交会在配置上配置allowMultiQueriestrue,但是…

爬虫逆向实战(二十八)--某税网第一步登录

一、数据接口分析 主页地址:某税网 1、抓包 通过抓包可以发现登录接口是factorAccountLogin 2、判断是否有加密参数 请求参数是否加密? 通过查看载荷模块可以发现有一个datagram 和 一个signature加密参数 请求头是否加密? 通过查看“标…

TCP连接分析:探寻TCP的三次握手

文章目录 一、实验背景与目的二、实验需求三、实验解法1. 预先抓包监测使用Wireshark工具2.进行TCP三次握手,访问www.baidu.com3.分析Wireshark捕获的TCP包 摘要: 本实验使用Wireshark工具,通过抓包监测和分析,深入研究了与百度服…

Cookie中的SameSite标示是什么

目录 背景介绍 原理 MDN上有比较完整的描述 如何确定cookie是否已经设置相关属性 背景介绍 SameSit

c++ qt--线程(一)(第八部分)

c qt–线程(一)(第八部分) 一.进程(Process) 在任务管理器中的进程页下,可以看到进程,任务管理器将进程分为了三类,应用、后台进程、window进程 应用: 打开…