Java中SpringBoot组件集成接入【MQTT中间件】

Java中SpringBoot组件集成接入【MQTT中间件】

    • 1.MQTT介绍
    • 2.搭建MQTT服务器
      • 1.Windows
      • 2.Ubuntu
      • 3.Docker
      • 4.其他方式
    • 3.mqtt可视化客户端MQTTX及快速使用教程
    • 4.SpringBoot接入MQTT
      • 1、maven依赖
      • 2、MQTT配置
      • 3、MQTT组件具体代码
        • 1.定义通道名字
        • 2.消息发布器
        • 3.MQTT配置、生产者、消费者
        • 4.调用生产者像指定通道发布消息
        • 5.测试
          • 1.先在客户端测试一下,可以看到mqtt服务是正常的
          • 2.调用生产者发布消息的接口,可以看到成功发布了
          • 3.从日志中也可以看到之前的消息都被程序接收到了,只需要在接收位置做业务逻辑即可
    • 5.其他参考文章

1.MQTT介绍

MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息传输协议,专门用于物联网(IoT)领域的通信。它旨在提供可靠且高效的消息传递机制,使设备和应用程序能够在低带宽、不稳定网络环境下进行实时通信。

MQTT协议采用了发布/订阅模式,其中包含两个主要角色:发布者(Publisher)和订阅者(Subscriber)。发布者负责将消息发布到特定的主题(Topic),而订阅者则通过订阅特定主题来接收相关消息。这种松耦合的通信方式使得系统能够轻松地扩展和管理。

MQTT协议具有以下特点:

  • 轻量级:MQTT协议使用简单的二进制协议头,消息开销很小,适合在低带宽、低功耗设备上使用。
  • 可靠性:MQTT支持确认和重传机制,确保消息在不稳定网络中的可靠传输。
  • 异步通信:发布者和订阅者不需要互相了解对方的存在,使得系统更加松耦合。
  • 灵活的消息过滤:订阅者可以使用通配符来过滤感兴趣的主题,灵活地选择接收哪些消息。
  • 安全性:MQTT支持通过TLS/SSL协议进行加密传输,并且可以使用认证机制进行身份验证。

由于其轻量级和简单易用的特点,MQTT被广泛用于物联网场景中,如传感器数据采集、远程监控、智能家居等。

官方资料链接:

MQTT ORG
EMQX

2.搭建MQTT服务器

1.Windows

  1. 下载emqx-5.1.0-windows-amd64.zip,解压
  2. 命令行下进入解压路径,执行以下命令启动 emqx
./emqx/bin/emqx start

在这里插入图片描述

2.Ubuntu

1.通过以下命令配置 EMQX Apt 源:

curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash

2.运行以下命令安装 EMQX:

sudo apt-get install emqx

3.运行以下命令启动 EMQX:

sudo systemctl start emqx

3.Docker

1.运行以下命令获取 Docker 镜像:

docker pull emqx/emqx:5.4.0

2.运行以下命令启动 Docker 容器。

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.4.0

4.其他方式

在这里插入图片描述

参考:EMQX文档

3.mqtt可视化客户端MQTTX及快速使用教程

MQTTX下载地址:MQTT 5.0 客户端工具

快速使用教程参考文章:Windows版mqtt可视化客户端快速使用教程
在这里插入图片描述

4.SpringBoot接入MQTT

1、maven依赖

		<!--MQTT依赖库--><dependency><groupId>org.springframework.integration</groupId><artifactId>spring-integration-core</artifactId><version>5.4.2</version></dependency><dependency><groupId>org.springframework.integration</groupId><artifactId>spring-integration-mqtt</artifactId><version>5.5.5</version></dependency>

2、MQTT配置

在bootstrap.yml中增加MQTT配置信息,可根据自身情况修改相关字段

#是否启用MQTT服务
spring.mqtt.enable=true
#MQTT-服务端地址(本地服务器)
spring.mqtt.url=tcp://127.0.0.1:1883
#MQTT-服务端用户名
spring.mqtt.username=admin
#MQTT-服务端密码(本地服务器)
spring.mqtt.password=public
#MQTT-客户端clientid
spring.mqtt.clientid=test001
#MQTT-Warning默认主题
spring.mqtt.topicWarning=topic_warning

3、MQTT组件具体代码

在这里插入图片描述

1.定义通道名字
public class ChannelName {/*** 订阅的bean名称*/public static final String CHANNEL_NAME_IN = "mqttInboundChannel";/*** 发布的bean名称*/public static final String CHANNEL_NAME_OUT = "mqttOutboundChannel";
}
2.消息发布器
import com.funfan.autoCodeDemo.component.mqtt.model.ChannelName;
import org.springframework.integration.annotation.MessagingGateway;
import org.springframework.integration.mqtt.support.MqttHeaders;
import org.springframework.messaging.handler.annotation.Header;
import 

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

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

相关文章

.NET学习教程一——.net基础定义+VS常用设置

一、定义 .NET分为.NET平台和.NET框架。 .NET平台&#xff08;厨房&#xff09;.NET FrameWork 框架&#xff08;柴米油盐酱醋茶&#xff09; .NET平台&#xff08;中国移动联通平台&#xff09;.NET FrameWork 框架&#xff08;信号塔&#xff09; .NET平台基于.NET Fra…

强化学习的数学原理学习笔记 - 值函数近似(Value Function Approximation)

文章目录 概览&#xff1a;RL方法分类值函数近似&#xff08;Value function approximation&#xff09;Basic idea目标函数&#xff08;objective function&#xff09;优化算法&#xff08;optimization algorithm&#xff09; Sarsa / Q-learning with function approximati…

JS输出为[object object]取值问题

问题&#xff1a;页面跳转传参 传参前数据能打印出来&#xff0c;传参后显示[object object]且无法取值 解决 传递 接收后端返回的json对象通常是一个字符串类型的object 所以 通过 JSON.stringify() 把 JavaScript 对象转换为字符串。 my.navigateTo({url: /pages/compo…

学生备考哪款护眼台灯好?2024五款知名品牌强力推荐

最近应后台小伙伴要求&#xff0c;给大家测评一些护眼台灯产品&#xff0c;毕竟现在的孩子近视人数真的非常多&#xff0c;每五个孩子戴眼镜的就有三个了&#xff0c;日常学习中保护视力&#xff0c;由于很多学习时间都是在晚上&#xff0c;台灯成为了为陪伴学习不可或缺的搭档…

深度学习:图神经网络——在推荐系统中的应用

PinSage是工业界应用图神经网络完成推荐任务的第一个成功案例&#xff0c;其从用户数据中构造图&#xff08;graph&#xff09;的方法和应对大规模图而采取的实现技巧都值得我们学习。PinSage被应用在图片推荐类Pinterest上。在Pinterest中&#xff0c;每个用户可以创建并命名图…

C++中如何在另一个类中使用主函数中的创建的类对象?

文章目录 要在 C 中在另一个类中使用主函数中创建的类对象&#xff0c;通常有几种方法。一种常见的做法是通过构造函数将对象作为引用或指针传递。以下是一个简单的例子&#xff0c;展示了这种做法&#xff1a; 假设我们有两个类 MyClass 和 OtherClass。我们想在 OtherClass …

TikTok电商年度洞察:出海到底“卖什么”?各国多类目爆款洞察,迅速掌握市场领先优势

很多卖家在尝试出海时&#xff0c;常面临两大核心痛点&#xff1a;一是“卖什么”&#xff0c;即选择何种商品进行销售&#xff1b;二是“怎么卖”&#xff0c;即如何通过有效的营销策略将商品销售出去。TikTok主打的内容电商模式&#xff0c;通过短视频和直播等形式&#xff0…

StampedLock锁探究

该锁提供了三种模式的读写控制&#xff0c;当调用获取锁的系列函数时&#xff0c;会返回一个long型的变量&#xff0c;我们称之为戳记(stamp),这个戳记代表了锁的状态。 其中try系列获取锁的函数&#xff0c;当获取锁失败后会返回为0的stamp 值。 当调用释放锁和转换锁的方法…

汽车中的ECU、VCU、MCU、HCU

一、ECU是汽车电脑&#xff0c;刷汽车电脑可以提高动力&#xff0c;也可以减低动力&#xff0c;看需求。 简单原理如下。 1.汽车发动机运转由汽车电脑&#xff08;即ECU&#xff09;控制。 2.ECU控制发动机的进气量&#xff0c;喷油量&#xff0c;点火时间等&#xff0c;从而…

成功解决使用git clone下载失败的问题: fatal: 过早的文件结束符(EOF) fatal: index-pack 失败

一.使用 http 可能出现的问题和解决 1.问题描述 ~$ git clone https://github.com/oKermorgant/ecn_baxter_vs.git 正克隆到 ecn_baxter_vs... remote: Enumerating objects: 13, done. remote: Counting objects: 100% (13/13), done. remote: Compressing objects: 100% (…

how to use pythonizer to transfer perl to python

git clone https://github.com/softpano/pythonizer export PERL5LIB/home/prometheus/pythonizer cd /home/prometheus/pythonizer ./pythonizer yourperlfile.plresult:you will get yourperlfile.py

Linux 系统日志及其归档

主要记录Linux 系统需要关注的日志文件&#xff0c;以及日志归档服务 rsyslogd 系统日志服务 rsyslogd 日志服务 rsyslogd reliable and extended syslogd 可靠 可扩展的系统日志服务 Rsyslogd是一个系统实用程序&#xff0c;提供对消息日志记录的支持。同时支持internet和uni…

强直性脊柱炎=“不死的癌症”?这些常识你不可不知→

对强直性脊柱炎这个疾病&#xff0c;大家最常听说的是&#xff1a;强直性脊柱炎症状重、治疗难&#xff0c;会逐渐引发关节畸形、功能丧失&#xff0c;甚至残疾&#xff0c;被称为「不死的癌症」。 然而&#xff0c;近来越来越多患有强直性脊柱炎的明星活跃在荧幕上&#xff0c…

材料表征的微观探测器——台阶高度测量技术概述

一、引言 表面特征是材料、化学等领域的不可或缺的主要研究内容&#xff0c;合理地评价表面形貌、表面特征等&#xff0c;对于相关材料的评定、性能的分析和加工条件的改善都具有重要的意义。 表面台阶高度测量在材料表面研究中有十分重要的作用。一方面&#xff0c;表面测量…

x-cmd pkg | busybox - 嵌入式 Linux 的瑞士军刀

目录 简介首次用户功能特点竞品和相关作品 进一步阅读 简介 busybox 是一个开源的轻量级工具集合&#xff0c;集成了一批最常用 Unix 工具命令&#xff0c;只需要几 MB 大小就能覆盖绝大多数用户在 Linux 的使用&#xff0c;能在多款 POSIX 环境的操作系统&#xff08;如 Linu…

避免重复扣款:分布式支付系统的幂等性原理与实践

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;6&#xff09;篇。 本文主要讲清楚什么是幂等性原理&#xff0c;在支付系统中的重要应用&#xff0c;业务幂等、全部幂等这些不同的幂等方案选型带来的收益和复杂度权衡&#xff0c;幂等击穿场景及可能的严重…

k8s源码阅读环境配置

源码阅读环境配置 k8s代码的阅读可以让我们更加深刻的理解k8s各组件的工作原理&#xff0c;同时提升我们Go编程能力。 IDE使用Goland&#xff0c;代码阅读环境需要进行如下配置&#xff1a; 从github上下载代码&#xff1a;https://github.com/kubernetes/kubernetes在GOPATH目…

CTF-PWN-沙箱逃脱-【seccomp和prtcl-2】

文章目录 沙箱逃脱prtcl题HITCON CTF 2017 Quals Impeccable Artifactflag文件对应prctl函数检查源码思路exp 沙箱逃脱prtcl题 HITCON CTF 2017 Quals Impeccable Artifact flag文件 此时的flag文件在本文件夹建一个即可 此时的我设置的flag为 对应prctl函数 第一条是禁止…

JavaScript解构赋值完全手册

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ 目录 ✨ 前言 第一节:解构赋值的基本用法 第二节:对象解构赋值 第三节:数组解构赋值 第四节:参数…

Qt基础-QtGlobal常用的全局函数及随机数产生实例

目录 一、全局函数定义 二、应用上面的函数产生一个随机数 三、随机数实例