influxdb(时序数据库)+mqtt(emqx+mqtt客户端)

下载安装influxdb

1、定义

InfluxDB 是一个开源的时序数据库(Time Series Database, TSDB),专门用于处理带有时间戳的数据。influxdb2-2.7.12-windows 是 InfluxDB 2.x 版本针对 Windows 操作系统的安装包。

2、下载

下载接下来我们介绍如何下载安装influxdb2-2.7.12-windows

直接通过官方链接下载(无需注册):

官方下载地址:influxdb2-2.7.12-windows.zip

3、作用

InfluxDB 主要应用于以下三个领域:

1)监控与运维 (Monitoring & Observability)

2)物联网 (IoT)

3)实时分析与事件处理

非常适合做实时仪表盘和报警系统。

如果你需要记录"什么东西在什么时间发生了多少数值 "这类数据(例如:9:47分,服务器A的CPU是45%),并且数据量很大、增长很快,那么 InfluxDB 就是最合适的工具之一。

4、组成:

1)influxd.exe:核心服务端,启动后数据库就正常运行了(端口 8086),这是必须的; 2)influx.exe:命令行客户端(可选),主要用于通过命令行操作数据库(比如查询数据、创建用户),没有它也能通过 Web 界面或 Java 项目完成所有操作。

你的 Spring Boot 项目连接 InfluxDB 时,只需要 influxd.exe 启动的服务端(端口 8086),不需要 influx.exe: 确保 influxd.exe 已启动(服务运行中); 在项目 application.yml 中配置连接信息(用 Web 初始化时的 Token、组织、存储桶):

复制代码
spring:
  influx:
    url: http://localhost:8086  # 本地 InfluxDB 服务地址
    org: my_org  # 你初始化时设置的组织名
    bucket: my_bucket  # 你初始化时设置的存储桶名
    token: your_api_token  # 初始化后生成的 Token(Web 界面可查)

5、web界面操作

后续操作(查询数据、创建表、导入导出)都能在 Web 界面完成: 点击左侧「Data Explorer」:可视化查询数据; 点击左侧「Organizations/Buckets」:管理组织和存储桶(类似数据库); 点击左侧「API Tokens」:查看 / 重置项目连接需要的 Token。

EMQT

很好的博客:https://blog.csdn.net/qq_53376718/article/details/147740549

MQTT 是一套 "消息传输协议"(类似 HTTP),EMQX 是基于 MQTT 协议的 "消息服务器"(类似 Tomcat),而 MQTT 客户端是 "连接服务器、收发消息的终端"(类似浏览器)

一、EMQX:基于 MQTT 的开源消息服务器(Broker) 1、定义

EMQX(全称 Erlang/Enterprise/Elastic MQTT Broker)是一款 高性能、高可用的开源 MQTT 消息服务器,由 EMQ 公司开发,基于 Erlang 语言构建(天生适合高并发、分布式场景)。它的核心作用是:作为 "消息中转站",接收来自 MQTT 客户端的消息,再转发给订阅了对应主题的客户端。 简单说:客户端 A 发送消息到 EMQX,客户端 B 订阅了 A 发送的 "消息主题",EMQX 就会把消息从 A 转发到 B,实现跨设备、跨网络的异步通信。

2、典型使用场景: 物联网(IoT):连接传感器、智能设备(如温湿度传感器、智能家电),采集设备数据并转发到后端系统(如你的 Spring Boot 项目)。 消息通知:APP 推送、短信验证码、系统告警(如服务器故障告警通过 EMQX 推送到管理员客户端)。

1.下载地址

Directory listing for EMQX: / | EMQ

我要下载的是: emqx-5.3.2-windows-amd64

将下载好的压缩包存放到纯英文的目录下,即可完成安装(不需要进行任何配置)

5.打开浏览器

输入:http://127.0.0.1:18083/

默认账号:admin,密码:public

该界面可设置一下个性化配置,一般默认即可

MQTT 客户端

1、定义

MQTT 客户端是 实现了 MQTT 协议、能与 EMQX 等 MQTT 服务器(Broker)建立连接,进而收发消息的程序 / 工具。任何设备(电脑、手机、传感器、服务器)只要安装了 MQTT 客户端,就能接入 MQTT 服务器进行通信。

2、角色

MQTT 客户端有两种核心角色(可同时兼具): 发布者(Publisher):发送消息到服务器(比如传感器采集温湿度后,作为发布者发送数据到 EMQX); 订阅者(Subscriber):从服务器接收消息(比如你的 Spring Boot 项目作为订阅者,从 EMQX 接收传感器数据)。

3、连接设置

当前 MQTTX 页面是默认的「连接公共服务器」,需要改成连接你本地启动的 EMQX,步骤如下: Name:自定义名称(比如 本地EMQX连接) Host: 下拉选择 mqtt://(因为本地 EMQX 用的是未加密的 1883 端口) 输入框改为 localhost(你的 EMQX 运行在本地电脑) Port:保持 1883(本地 EMQX 默认端口) Client ID:默认自动生成的即可(比如 mqttx_79db54dd),不用改 Username/Password:留空(本地 EMQX 默认关闭认证,不需要账号密码) SSL/TLS:保持关闭(灰色) 其他(Advanced 部分):默认即可(MQTT Version 5.0、超时 10s、心跳 60s)

4、application.yml设置

我们需要在项目中写代码读取 application.yml 的 MQTT 配置,并实现「连接 EMQX + 订阅主题 + 收发消息」

1、application.yml配置

XML 复制代码
# === MQTT 配置 (自定义) ===
mqtt:
  broker-url: tcp://localhost:1883  # 1. EMQX 服务器的连接地址和端口
  client-id: nia500-backend         # 2. 项目在 EMQX 中的"唯一身份标识"
  username:                         # 3. EMQX 认证用户名(本地未开启认证,留空)
  password:                         # 4. EMQX 认证密码(本地未开启认证,留空)
  topic: /device/+/report           # 5. 项目要订阅的 MQTT 消息主题(监听的"频道")

项目要 "监听" 的消息主题(类似你订阅报纸时选择的 "报纸类型")。

这里 /device/+/report``+``device/123``device/456``report.

2、引入 MQTT 依赖

XML 复制代码
<dependency>
 <groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId>
 <version>1.2.5</version>
</dependency>

3、编写 MQTT 配置类 创建 MqttConfig.java,读取配置并初始化客户端: 编写 MQTT 消息发布工具类(可选)

主题设置

复制代码
你的项目订阅的主题是 /device/+/report(+ 是设备地址的通配符),所以 MQTTX 发布消息时,主题需要符合 /device/[设备地址]/report 的格式:
示例主题:/device/192.168.1.100/report(其中 192.168.1.100 是设备地址,可自定义)

主题

分隔符:用 / 划分主题的 "层级" 大小写敏感 二、关键:Topic 通配符

  1. 单层通配符:+(匹配 "一个层级" 的任意内容) 能匹配到的主题(正确场景): /device/123/report(设备 123 上报) 不能匹配到的主题(错误场景): /device/123/temperature/report(多了 temperature 层级,+ 只能匹配一个层级)

  2. 多层通配符:#(匹配 "多个层级" 的任意内容,只能放最后) 示例:/device/# 能匹配的主题: /device/123/report(123 设备上报) /device/456/control/start(456 设备控制指令)

总结:

1、本文呢首先介绍了influxdb定义(一个开源的时序数据库),下载方式,作用(监控与运维,物联网 (IoT),实时分析与事件处理);组成(核心服务端(influxd.exe)和命令行客户端(influx.exe)),在web上的一些操作。

2、又介绍了emqt的一篇博客,并介绍了emqx(broker)的定义作用,使用场景,以及下载和打开。

2、另介绍了MQTT客户端的定义和角色(发布者和订阅者);还介绍了mqtt客户端(软件发布者)的连接设置(修改broker为本地的),又分享了(代码接受者)中application,yml中的mqtt配置(实现连接emqx+订阅主题+收发消息),和引入依赖,实现mqtt类等操作;

4、还介绍了主题中的Topic 通配符(单层通配符+和多层通配符#)

相关推荐
珠海西格2 小时前
红区之困:分布式光伏爆发背后的“逆流危机”
大数据·运维·服务器·数据库·人工智能·分布式
Volunteer Technology2 小时前
Redis跟HashMap在结构上的区别
数据库·redis·缓存
林鸿群2 小时前
批量提取游戏信息并插入数据库的自动化实践
数据库·游戏·自动化
Bin努力加餐饭2 小时前
MongoDB
数据库·mongodb
白藏y2 小时前
【MySQL】CentOS 7 环境下 MySQL 5.7 完整安装与配置
数据库·mysql
小箌2 小时前
JavaWeb_02
java·数据库·maven·mybatis
数据知道2 小时前
详解MongoDB混合部署策略:复制集与分片集群的组合应用
数据库·mongodb
溜达的大象2 小时前
后端常用技术全方位分析:从核心标配到淘汰弃用,一文理清技术选型逻辑
网络·数据库
麦聪聊数据2 小时前
QuickAPI 如何重塑可视化大屏与 BI 的数据交付链路?
数据库·sql·低代码·微服务·重构