JAVA MQTT 发布主题请求,订阅主题接收,订阅主题回复,发布主题再接收回复,三步走

先看效果

一、准备工作

1.官网下载emqx压缩包放到自己的盘符下,不要带中文路径

下载 EMQX

2.在路径的bin中,cmd,启动emqx服务

emqx start

3.访问服务,能打开就证明启动成功,登录的话官网默认的密码账号(后续用不到登录)

http://localhost:18083

二、pom依赖

        <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2.5</version></dependency>

三、工具类复制就可以使用

mqtt信息 


import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;/*** mqtt信息 实体类** @author Administrator* @since 2024-04-23*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Mqtt {/*** mqttid*/@Id(keyType = KeyType.Auto)private Integer id;/*** 网址*/private String broker;/*** 昵称*/private String username;/*** 密码*/private String password;/*** 发布主题id*/private String clientid1;/*** 订阅主题id*/private String clientid2;/*** 主题*/private String topic;/*** 回复主题*/private String replyTopic;/*** 服务质量,0:消息最多传送一次如果当前客户端不可用,它将丢失这条消息1:消息至少传送一次 2:消息只传送一次*/private Integer qos;}

Publisher(发布主题)


import com.alibaba.fastjson.JSONObject;
import com.test.entity.Mqtt;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;import java.util.HashMap;public class Publisher {public static void main(String[] args) throws MqttException {Mqtt mqtt = new Mqtt();mqtt.setBroker("tcp://127.0.0.1:1883");mqtt.setUsername("emqx");mqtt.setPassword("public");mqtt.setClientid1("publish_client");mqtt.setClientid2("subscribe_client");mqtt.setTopic("mqtt/test");mqtt.setReplyTopic("mqtt/reply");mqtt.setQos(1);publisher(mqtt,"你好订阅主题");}/*** 发布主题** @param mqtt* @param content*/public static void publisher(Mqtt mqtt, String content) {MemoryPersistence persistence = new MemoryPersistence();try {MqttClient client = new MqttClient(mqtt.getBroker(), mqtt.getClientid1(), persistence);MqttConnectOptions options = new MqttConnectOptions();options.setCleanSession(true);client.connect(options);// 订阅回复消息的主题client.subscribe(mqtt.getReplyTopic(), 2);MqttMessage message = new MqttMessage(content.getBytes());client.publish(mqtt.getTopic(), message);client.setCallback(new MqttCallback() {@Overridepublic void connectionLost(Throwable cause) {}@Overridepublic void messageArrived(String topic, MqttMessage message) throws Exception {System.out.println("接收到了订阅主题回复: " + new String(message.getPayload()));}@Overridepublic void deliveryComplete(IMqttDeliveryToken token) {}});// client.disconnect();} catch (Exception e) {e.printStackTrace();}}}

 Subscriber(订阅主题)

import com.alibaba.fastjson.JSONObject;
import com.xiaoqiu.gate2.entity.Mqtt;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;import java.util.HashMap;public class Subscriber {public static void main(String[] args) throws MqttException {Mqtt mqtt = new Mqtt();mqtt.setBroker("tcp://127.0.0.1:1883");mqtt.setUsername("emqx");mqtt.setPassword("public");mqtt.setClientid1("publish_client");mqtt.setClientid2("subscribe_client");mqtt.setTopic("mqtt/test");mqtt.setReplyTopic("mqtt/reply");mqtt.setQos(1);subscriber(mqtt);}/*** 订阅主题** @param mqtt*/public static void subscriber(Mqtt mqtt) {MemoryPersistence persistence = new MemoryPersistence();try {MqttClient client = new MqttClient(mqtt.getBroker(), mqtt.getClientid2(), persistence);MqttConnectOptions options = new MqttConnectOptions();options.setCleanSession(true);client.connect(options);client.setCallback(new MqttCallback() {@Overridepublic void connectionLost(Throwable cause) {}@Overridepublic void messageArrived(String topic, MqttMessage message) throws Exception {System.out.println("接收到了发布主题请求: " + new String(message.getPayload()));// 回复消息MqttMessage replyMessage = new MqttMessage("你好,发布主题".getBytes());client.publish(mqtt.getReplyTopic(), replyMessage);}@Overridepublic void deliveryComplete(IMqttDeliveryToken token) {}});client.subscribe(mqtt.getTopic(), 2);} catch (Exception e) {e.printStackTrace();}}}

五、分别启动订阅题类和发布主题类(最后),运行效果

这个订阅工具类的回复写错了,正确的是:你好发布主题

更正后

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

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

相关文章

【C#】Stopwatch计时器

使用Stopwatch检查C#中代码块的执行时间&#xff0c;比如歌曲&#xff0c;图片的下载时间问题 首先&#xff0c;我们可看到Stopwatch 类内部的函数。 根据需求&#xff0c;我们具体可使用到 Start() 开始计时&#xff0c;Stop() 停止计时等 //创建 Stopwatch 实例 Stopwatch …

STM32单片机C语言模块化编程实战:LED控制详解与示例

一、开发环境 硬件&#xff1a;正点原子探索者 V3 STM32F407 开发板 单片机&#xff1a;STM32F407ZGT6 Keil版本&#xff1a;5.32 STM32CubeMX版本&#xff1a;6.9.2 STM32Cube MCU Packges版本&#xff1a;STM32F4 V1.27.1 之前介绍了很多关于点灯的方法&#xff0c;比如…

ARM DMIPS算力说明

ARM DMIPS算力说明 ARM算力参考官网地址 https://en.wikipedia.org/wiki/List_of_ARM_processors Product familyARM architectureProcessorFeatureCache (I / D), MMUTypical MIPS MHzReferenceARM1ARMv1ARM1First implementationNoneARM2ARMv2ARM2ARMv2 added the MUL (mu…

【SSM进阶学习系列丨整合篇】Spring+SpringMVC+MyBatis 框架配置详解

文章目录 一、环境准备1.1、创建数据库和表1.2、导入框架依赖的jar包1.3、修改Maven的编译版本1.4、完善Maven目录1.5、编写项目需要的包1.6、编写实体、Mapper、Service 二、配置MyBatis环境2.1、配置mybatis的主配置文件2.2、编写映射文件2.3、测试环境是否正确 三、配置Spri…

el-table 三角形提示

<template><div><el-table :data"tableData" style"width: 100%"><el-table-column prop"ddd" label"日期2" width"150" /><el-table-column prop"ddd" label"日期2" width…

[C++][算法基础]分组背包问题(动态规划)

有 &#x1d441; 组物品和一个容量是 &#x1d449; 的背包。 每组物品有若干个&#xff0c;同一组内的物品最多只能选一个。 每件物品的体积是 &#xff0c;价值是 &#xff0c;其中 &#x1d456; 是组号&#xff0c;&#x1d457; 是组内编号。 求解将哪些物品装入背包&a…

iOS CI/CD 持续集成 组件化专题二 Cocoapods /Cocoapods Packager 问题汇总

执行pod package xxx.podspec --force --no-mangle --exclude-deps --verbose 报错 warning: Building targets in manual order is deprecated - check "Parallelize build for command-line builds" in the project editor, or set DISABLE_MANUAL_TARGET_ORDER_BU…

Linux 静态IP地址修改与报错处理

目录 查看网卡信息 Ubuntu 16.04.5 LTS、Ubuntu 20.04.6 LTS Ubuntu 18.04.6 LTS Centos 8.0 修改IP地址 将IP地址置空 确认修改是否生效 查看网卡信息 ifconfig ifconfig -a Ubuntu 16.04.5 LTS、Ubuntu 20.04.6 LTS 修改配置 vim /etc/network/interfaces # This …

AI大模型探索之路-训练篇1:大语言模型微调基础认知

文章目录 前言一、微调技术概述二、微调的必要性三、大模型的微调方法四、微调过程中的技术细节五、微调后的模型评估与应用总结 前言 在人工智能的广阔研究领域内&#xff0c;大型预训练语言模型&#xff08;Large Language Models, LLMs&#xff09;已经成为推动技术革新的关…

一、路由基础

1.路由协议的优先级 路由器分别定义了外部优先级和内部优先级&#xff08;越小越优&#xff09; 路由选择顺序&#xff1a;外部优先级>>内部优先级&#xff08;相同时&#xff09; ①外部优先级&#xff1a;用户可以手工为各路由协议配置的优先级 ②内部优先级&#xf…

go开发环境安装配置(vscode)

安装 变量 $GOROOT 表示 Go 在你的电脑上的安装位置 $GOARCH 表示目标机器的处理器架构,它的值可以是 386、amd64 或 arm $GOOS 表示目标机器的操作系统,它的值可以是 darwin、freebsd、linux 或 windows $GOBIN 表示编译器和链接器的安装位置,默认是 $GOROOT/bin,Go 1.0.3可…

目标检测YOLO实战应用案例100讲-基于YOLOv5的目标检测与6D位姿估计算法研究(中)

目录 3.3 相机成像原理 3.3.1 坐标系的建立及关系 3.3.2 相机标定 3.3.3 相机畸变

天星金融普及个人养老金制度,共筑老龄友好型社会

在人口老龄化的浪潮中&#xff0c;我国正面临着日益严峻的养老挑战。据国家卫健委数据显示&#xff0c;预计到2035年&#xff0c;我国60岁及以上人口占总人口的比例将超过30%&#xff0c;构建老龄友好型社会已成为国家发展的重要任务。在这一背景下&#xff0c;个人养老金制度的…

OmniPlan Pro for Mac v4.8.0中文激活版 项目流程管理工具

OmniPlan Pro for Mac是一款功能强大的项目管理软件&#xff0c;它以其直观的用户界面和丰富的功能&#xff0c;帮助用户轻松管理各种复杂的项目。 OmniPlan Pro for Mac v4.8.0中文激活版 通过OmniPlan Pro&#xff0c;用户可以轻松创建任务&#xff0c;设置任务的开始和结束时…

Pulsar【部署 02】Pulsar可视化工具Manager安装使用

Pulsar Manager 是一个基于 web 的 GUI 管理和监视工具&#xff0c;可帮助管理员和用户管理和监视租户、命名空间、主题、订阅、代理、集群等&#xff0c;并支持对多个环境进行动态配置。 可视化工具Manager安装使用 1.Docker1.1 拉取镜像并启动1.2 设置用户名密码1.3 登录并添…

leetcode热题HOT 152. 乘积最大子数组

一、问题描述&#xff1a; 给你一个整数数组 nums &#xff0c;请你找出数组中乘积最大的非空连续子数组&#xff08;该子数组中至少包含一个数字&#xff09;&#xff0c;并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 二、问题分析&#xff1a; 考虑到乘…

acwing算法提高之数据结构--并查集

目录 1 介绍2 训练3 参考 1 介绍 本专题用来记录并查集相关的题目。 并查集模板&#xff1a; //初始化 for (int i 1; i < n; i) { //n为结点数目p[i] i; }//查找 find(int x) {if (p[x] ! x) p[x] find(p[x]);return p[x]; }//合并 int pa find(a); int pb find(b)…

Java进阶知识点及案例总结(续2)

深浅拷贝 浅拷贝 开发中我们经常需要复制一个对象或数组&#xff0c;如果直接使用赋值&#xff0c;当改变复制之后的对象或数组时&#xff0c;原对向也会改变&#xff0c;拷贝时我们需要改变复制之后的对象或数组的值&#xff0c;但不改变原对象或数组的值。 浅拷贝和深拷贝…

openstack界面简单修改

openstack Ubuntu主题登录界面修改修改登陆界面背景登录框边缘添加透明效果修改登录界面logo更换站点图片更换项目logo图片 本实验基于VMware17&#xff0c;使用Ubuntu2310搭建openstack-B版 Ubuntu主题 以下配置只对Ubuntu主题生效 登录界面修改 原界面 关闭登录界面域名输…

LTD271次升级 | 网站/小程序可设访问IP的黑白名单 • 官微中心支持PDF等办公文件预览与并分享 • 订单退款显示更详尽明细

1、新增IP访问限制功能&#xff1b; 2、订单新增交易号显示与退款明细显示&#xff1b; 3、自定义地址增加四级地区&#xff1b; 4、Android版App优化文件功能&#xff1b; 5、已知问题修复与优化&#xff1b; 01 官微中心 1) 新增IP限制访问功能 允许或者禁止某些 IP 或…