概述

mqtt是一个物联网协议。
简单来说它由三大块组成:

  1. 服务端(转发消息的server)
  2. 生产者(发送消息)
  3. 消费者(接收消息)

简单来说就是一个轻量级的收发消息的东西。发消息的人也可以消费消息。
消息由中间的消息服务器转发给对应的订阅者。

代码demo

下面是自己运行的demo,copy的官网
https://www.emqx.io/docs/zh/v5.0/development/java.html#paho-java-%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B

package com.fchan;import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;/*** ClassName: MqttClient* Description:* date: 2022/11/1 18:01** @author fchen*/
public class MqttSendClient {public static void main(String[] args){String subTopic = "nb_fchan/#";String pubTopic = "nb_fchan/1";String content = "Hello World";int qos = 2;String broker = "tcp://broker.emqx.io:1883";String clientId = "emqx_test";MemoryPersistence persistence = new MemoryPersistence();try {MqttClient client = new MqttClient(broker, clientId, persistence);// MQTT 连接选项MqttConnectOptions connOpts = new MqttConnectOptions();connOpts.setUserName("emqx_test");connOpts.setPassword("emqx_test_password".toCharArray());// 保留会话connOpts.setCleanSession(true);// 设置回调client.setCallback(new ClientOnMessageCallback());// 建立连接System.out.println("Connecting to broker: " + broker);client.connect(connOpts);System.out.println("Connected");System.out.println("Publishing message: " + content);// 订阅client.subscribe(subTopic);// 消息发布所需参数MqttMessage message = new MqttMessage(content.getBytes());message.setQos(qos);client.publish(pubTopic, message);System.out.println("Message published");client.disconnect();System.out.println("Disconnected");client.close();System.exit(0);} catch (MqttException me) {System.out.println("reason " + me.getReasonCode());System.out.println("msg " + me.getMessage());System.out.println("loc " + me.getLocalizedMessage());System.out.println("cause " + me.getCause());System.out.println("excep " + me);me.printStackTrace();}}}package com.fchan;import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;/*** ClassName: OnMessageCallback* Description:* date: 2022/11/1 18:06** @author fchen*/
public class ClientOnMessageCallback implements MqttCallback {@Overridepublic void connectionLost(Throwable cause) {// 连接丢失后,一般在这里面进行重连System.out.println("连接断开,可以做重连");}/*** QoS0,At most once,至多一次;* QoS1,At least once,至少一次;* QoS2,Exactly once,确保只有一次。* @param topic* @param message* @throws Exception*/@Overridepublic void messageArrived(String topic, MqttMessage message) throws Exception {// subscribe后得到的消息会执行到这里面System.out.println("接收消息主题:" + topic);System.out.println("接收消息Qos:" + message.getQos());System.out.println("接收消息内容:" + new String(message.getPayload()));}@Overridepublic void deliveryComplete(IMqttDeliveryToken token) {System.out.println("deliveryComplete---------" + token.isComplete());}
}

springboot下mqtt简单使用相关推荐

  1. Springboot实现MQTT通信

    目录 一.MQTT简介 1.MQTT协议 2.MQTT协议特点 二.MQTT服务器搭建 三.使用Springboot整合MQTT协议 1.在父工程下创建一个Springboot项目作为消息的提供者 1 ...

  2. SpringBoot + Spring Security 简单入门

    这篇文章主要介绍了SpringBoot + Spring Security 简单入门 Spring Security 基本介绍 这里就不对Spring Security进行过多的介绍了,具体的可以参考 ...

  3. Eclipse 工具上Springboot项目的简单 增删改查 的搭建

    目录 一.为嘛子要学习Springboot 二.简单的说下springboot 三.咱们对比看看呗 四.开始操作,建项目 1.建一个maven项目 2.pom.xml 依赖 以及 配置文件 ①简单的依 ...

  4. springboot+uniapp实现简单注册登录

    springboot+uniapp实现简单注册登录 前言 后端 新建springboot项目 配置数据库 建表,写对应类 写接口,写对应xml文件 封装返回信息,封装UUID Service层 Con ...

  5. 繁易MQTT简单操作说明

    繁易MQTT简单操作说明 一,emqttd的安装与部署 1,下载emqttd软件安装包 https://www.emqx.io/ 2,下载解压之后,cmd进入软件bin目录下,输入emqttd con ...

  6. SpringBoot +WebSocket实现简单聊天室功能实例

    SpringBoot +WebSocket实现简单聊天室功能实例) 一.代码来源 二.依赖下载 三.数据库准备(sql) 数据库建表并插入sql 四.resources文件配置 application ...

  7. 1112_Vue+SpringBoot+Mybatis的简单员工管理项目

    Vue+SpringBoot+Mybatis的简单员工管理项目 本文项目参考自:https://github.com/boylegu/SpringBoot-vue https://www.cnblog ...

  8. Docker下redis与springboot三部曲之三:springboot下访问redis哨兵

    在< Docker下redis与springboot三部曲之二:安装redis主从和哨兵>一文中,我们在docker下搭建了redis主从和哨兵,本章我们开发一个基于springboot的 ...

  9. SpringBoot下的策略模式,消灭了大量的ifelse,真香!

    前言 项目中有这样一个场景,在公园放置了用来拍摄人像的识别杆,根据用户在不同识别杆之间采集的图象来计算用户的运动距离.由于涉及到许多公园,每个公园的布局不同,识别杆之间距离不同,算法也不同.但代码中每 ...

最新文章

  1. C#实现一个用于开机启动其他程序的Windows服务
  2. 理解RESTful架构
  3. 网友:Java岗,自学一个月跳槽计算机视觉,其实入门很简单
  4. 《Pro ASP.NET MVC 3 Framework》学习笔记之二十七【视图1】
  5. Python 学习笔记(半ZZ半自己写)
  6. Python面向对象中:__init__() 构造方法
  7. vue图片点击超链接_vue使用v-for实现hover点击效果
  8. Nginx核心模块——HTTP中的配置指令location和rewrite介绍
  9. 连号区间数(2013年第四届c/c++ b组第10题)
  10. php date 有warning,PHP Warning: strtotime()错误解决办法
  11. shell脚本触发java程序支持传参补跑 +crontab定时器_02
  12. System.Runtime.InteropServices浅见
  13. oracle ora32771,Oracle的文件号、相对文件号及其他(续)
  14. android modem开发(16)---MTK语音测试
  15. 有效提升 Virtual Server 2005 R2 with SP1 的速度
  16. Aspose-Cells结合Apache POI生成excel文件以及转换为pdf
  17. 算法:判断对称树 101. Symmetric Tree
  18. word表格分开快捷键_Word用鼠标和快捷键拆分单元格与合并单元格
  19. 水晶报表 小代码大作用【BY 阿泰】
  20. 如何构建企业内的 TiDB 自运维体系

热门文章

  1. style对象和less/scss互相转换,驼峰转中横线,支持嵌套转换
  2. word中插入的word,excel,ppt打不开,显示为unknown。双击后显示[找不到服务器程序···] 解决方法
  3. taobao.trade.amount.get( 交易帐务查询 )
  4. 编一个函数求n的阶乘;使用for语句和while语句求n的阶乘;关于简单阶乘的求和(C)
  5. 腐蚀与膨胀的基本操作
  6. R语言读取Excel文件的一系列陷阱
  7. 虹科带你今天来聊聊,什么是EMC测试?
  8. 购买电脑,选择Windows8预装,很超值
  9. 牛顿迭代法求一个数开方
  10. 什么是GNU/Linux?