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…

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

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

一、路由基础

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

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 登录并添…

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 或…

信创需求激增,国产服务器操作系统赋能数字化转型

信创&#xff0c;即信息技术应用创新&#xff0c;是指在关键领域和环节推进信息技术的自主创新&#xff0c;构建安全可控的信息技术体系。随着数字化转型的加速&#xff0c;信创需求激增&#xff0c;国产服务器操作系统在其中扮演着至关重要的角色。国产服务器操作系统如何赋能…

WPF —— lCommand命令实例

首先在标签页面设置一个Button按钮 <Button Width"100" Height"40" Content"测试" ></Button> 1 创建一个类 继承于ICommand这个接口&#xff0c; 这个接口一般包含三部分&#xff1a; 俩个方法&#xff1a;一个判断指令是不是…

【树莓派】yolov5 Lite,目标检测,树莓派4B,推理v5lite-e_end2end.onnx,摄像头实时目标检测

文章目录 YOLOv5 Lite: 在树莓派上轻松运行目标检测1. 环境配置2. 克隆项目3. 安装依赖项4. 下载模型权重5. 理解end2end的含义6. 示例推理7. 文件介绍8. 把文件弄到树莓派4B执行9. 进一步尝试fp16的onnx&#xff08;行不通&#xff09;10. 视频流检测 这里有大概的环境配置&am…

淘宝图片搜索API接口:技术原理、使用方法与最佳实践指南

淘宝图片搜索API接口技术详解 在数字化时代&#xff0c;图片搜索已经成为一种高效、直观的信息检索方式。淘宝作为国内最大的电商平台&#xff0c;其图片搜索API接口对于提高购物体验和商家运营效率具有重要意义。本文将详细解析淘宝图片搜索API接口的技术原理、使用方法和注意…

WordPress安装报错常见问题

WordPress安装过程很简单&#xff0c;不过还是有些朋友会碰到安装WordPress出错的情况。前不久我们遇到Hostease的客户在安装wordpress的时候遇到安装wordpress出错。显示数据连接错误。 数据库连接失败 数据库连接失败是最常见的错误情况。 添加图片注释&#xff0c;不超过 …

ASP.NET集成客户关系管理的企业网站的设计与开发

摘 要 企业要在激烈的市场竞争中立于不败之地&#xff0c;就必须找一种全新的管理理念和管理手段&#xff0c;对其内部和外部资源进行有效的整合。新一代ERP产品正在向客户端和供应端延伸&#xff0c;客户端的延伸即是客户关系管理。对于每个企业来说客户管理的完善程度将直接…

LeetCode in Python 48. Rotate Image/Matrix (旋转图像/矩阵)

旋转图像/矩阵的重点是寻找旋转前后对应位置的坐标关系。 示例&#xff1a; 图1 旋转图像/矩阵的输入输出示意图 代码&#xff1a; class Solution:def rotate(self, matrix):n len(matrix)for i in range(n // 2):for j in range(i, n - 1 - i):topleft matrix[i][j]ma…

最新报告 | 美妆个护NO.1或将易主?理性之后如何重塑美区爆品思维?

TikTok 美妆个护赛道自去年高歌猛进以来&#xff0c;一批又一批的美妆、护肤、个护类商家陆续进场&#xff0c;市场大浪淘沙之下&#xff0c;有月销300万美金的磨砂膏&#xff0c;有月销32.88万单的薄荷漱口油&#xff0c;有全TikTok 视频曝光单月超3500万的定型喷雾... 不要…