【MQTT】MQTT实现订阅发送demo

2023-10-30

Mqtt简单实现发送消息、订阅消息# 系列文章目录



安装好Mosquitto

可查看Mqtt服务器安装
【MQTT】MQTT服务器mosquitto和客户端paho的使用

找到安装路径,双击mosquitto.exe 打开mosquitto

maven引入依赖

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

创建发布客户端 PublishClient.java

使用Mosquitto服务器本机环境,设置mqtt服务器地址为 tcp://127.0.0.1:1883

//mqtt服务器地址
public static final String HOST = "tcp://127.0.0.1:1883";

​ 使用两种方法发送消息,主题为tset/1test/2

​ 然后每隔10秒循环发送消息,完整代码如下:

//发布客户端
public class PublishClient {
    //mqtt服务器地址
    public static final String HOST = "tcp://127.0.0.1:1883";
    //主题
    public static final String TOPIC1 = "test/1";
    public static final String TOPIC2 = "test/2";
    //mqtt 客户机ID
    private static final String clientid = "server";
    private MqttClient client;//客户端实例
    private MqttTopic topic1;//主题实例
    private String userName = "*****";  //非必须
    private String passWord = "*****";  //非必须
    private MqttMessage message;
    //初始化客户端实例
    public PublishClient() throws MqttException {
        //MemoryPersistence设置clientid的保存形式,默认为以内存保存
        client = new MqttClient(HOST, clientid, new MemoryPersistence());
        connect();
    }
    //连接服务器
    private void connect() {
        //连接配置
        MqttConnectOptions options = new MqttConnectOptions();
        options.setCleanSession(true);//不保存,每次重启新client
        options.setUserName(userName);
        options.setPassword(passWord.toCharArray());
        // 设置超时时间
        options.setConnectionTimeout(10);
        // 设置会话心跳时间
        options.setKeepAliveInterval(20);
        try {
            //设置发布回调
            client.setCallback(new PublishCallback());
            client.connect(options);
            topic1 = client.getTopic(TOPIC1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //发布1
    public void publish(MqttTopic topic, MqttMessage message) throws MqttException,
            MqttException {
        MqttDeliveryToken token = topic.publish(message);
        token.waitForCompletion();
        System.out.println("消息已发布! " + token.isComplete());
    }
    //发布2
    public void publish(String topic,MqttMessage message) throws MqttException{
        client.publish(topic,message);
        System.out.println("消息已发布! ");
    }
    //测试类
    public static void main(String[] args) throws MqttException, InterruptedException {
        //发布客户端
        PublishClient server = new PublishClient();
        boolean toggle =true;
        //每隔10s发一条
        while (true) {
            if(toggle) {
                server.message = new MqttMessage();
                server.message.setQos(1);//保证消息能到达一次
                server.message.setRetained(true);//消息保留
                server.message.setPayload(("发布主题:{" + TOPIC1 + "}---菜鸟进阶之路1									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MQTT】MQTT实现订阅发送demo 的相关文章

随机推荐

  • 【区块链共识算法】-PoW算法

    极客时间 工作量证明 比如小李来 BAT 面试 说自己的编程能力很强 那么他需要做一定难度的工作 比如做个编程题 根据做题结果 面试官可以判断他是否适合这个岗位 工作对于请求方是有难度的 对于验证方则是比较简单的 易于验证的 Pow算法 计
  • vue如何制作动态效果的进度条

    vue如何制作动态效果的进度条 先看效果图 制作这样动效的进度条其实很简单 我们只需要将进度条原本的背景通过transparent画出如下图片的效果 之后我们通过keyframes设置背景的动画效果就做成了 下面上代码 首先进度条的进度提示
  • 使用Python爬取实时天气信息: 如何构建自己的气象观察站

    目录 步骤1 选择天气网站 步骤2 发送HTTP请求 步骤3 解析HTML内容 步骤4 提取天气数据
  • 1. CUDA安装失败解决方法

    CUDA安装失败原因 一般CUDA安装失败都是由于其中Visual Studio VS Intergration无法安装导致的 当然可以通过自定义的方式取消Visual Studio Intergration进行安装 然后再重新用CUDA安
  • zookeeper最新版3.6.2单机、集群

    Linux安装zookeeper3 6 2单机 集群 注意 需要先安装JDK 可以参考这里 Linux 安装JDK1 8 1 下载 wget http mirror bit edu cn apache zookeeper zookeeper
  • 学习Node.js的基础知识和核心概念(全面)

    Node js 这个神奇的技术 融合了前端与后端的力量 让JavaScript在服务器端发挥了异乎寻常的魔力 本文将通过代码和文字解释 全面介绍Node js的特点 从异步非阻塞I O到强大的模块系统 再到丰富的包管理和事件驱动编程 一步步
  • JAVA同步代码块 & 同步方法

    JAVA同步代码块 同步方法 为了解决多线程操作共享数据时产生的安全问题 例如以下代码 if ticket lt 0 卖完了 break else ticket System out println Thread currentThread
  • dss_linkis(datasphere studio-1.1.1、linkis-1.1.1)基础框架安装

    目录 一 基础框架安装 1 1 所需的环境 1 2 环境部署 1 3 dss linkis安装 一 基础框架安装 1 1 所需的环境 我的安装环境如下 与官网给出的相差一点点 CentOS7 DataSphere Studio1 1 1 J
  • 线程的局部变量——ThreadLocal

    ThreadLocal是什么 对这个词语分解 将其分为Thread和Local 顾名思义便是本线程的变量 既然是当前线程的变量 那么就意味着这个变量对于其他线程来说就是隔离的 也就是不可见的 ThreadLocal对每一个线程都有一个副本
  • Eclipse汉化教程

    前言 首次使用Eclipse时 我们对那些不知道的英语都感到迷惑 很多人都会上X度查 那么 如果不用X度 我们该如何进行汉化呢 1 Babel链接获取 到Eclipse Babel Project Downloads获取Babel链接 如图
  • TCP的四个拥塞控制算法

    目录 假定 慢开始 拥塞避免算法 快重传 快恢复 假定 cwnd 拥塞窗口 swnd 发送窗口 swnd cwnd ssthresh 门限值 发送方维护一个叫做拥塞窗口cwnd的状态变量 其值取决于网络的拥塞程度 并且动态变化 拥塞窗口cw
  • 【C语言进阶】⑥函数指针详解

    一 函数指针 1 概念 函数指针 首先它是一个指针 一个指向函数的指针 在内存空间中存放的是函数的地址 请看示例 int main int a 10 int pa a char ch c char pc ch int arr 10 0 in
  • java调用C或者C++动态库dll

    java调用C或者C 动态库dll 本文章使用的是IntelliJ IDEA Community Edition 2021 2 3版本测试的 1 新建项目 linjie demo 添加类HelloLinjie 2 选择项目 新建 目录 输入
  • redis 5 HyperLogLog 布隆过滤器 GeoHash 和 scan

    空闲的时候可以用root登录服务器 玩下左轮手枪 RANDOM 6 0 rm rf echo Clicks 这次我们一起来看下redis的HyperLogLog 布隆过滤器 GeoHash 和 scan HyperLogLog 先看个场景
  • 第1章 前 言

    来源 我是码农 转载请保留出处和链接 本文链接 http www 54manong com id 1258 1 1 问题的背景 1 1 1 RFID技术 RFID即无线射频识别技术 Radio Frequency Identificatio
  • 一维动态规划-拾取硬币

    1 问题引入 假如有n个硬币排在一行 如 c 0 c 1
  • opengl测试操作

    深度测试 深度缓冲 Depth Buffer 来防止被阻挡的面渲染到其它面的前面 在这一节中 我们将会更加深入地讨论这些储存在深度缓冲 或z缓冲 z buffer 中的深度值 Depth Value 以及它们是如何确定一个片段是处于其它片段
  • CoordinatorLayout+ToolbarLayout+Behavior实现动态搜索框

    文章目录 最终效果图 参照京东 1 实现思路 2 具体流程 3 问题解决 项目地址 最终效果图 参照京东 1 实现思路 CoordinatorLayout中可以用Behavior实现特定的布局位置和滑动效果 我们使用Behavior来控制搜
  • DataSourceBuilder.create().build()

    Spring Boot also provides a utility builder class DataSourceBuilder that can be used to create one of the standard data
  • 【MQTT】MQTT实现订阅发送demo

    Mqtt简单实现发送消息 订阅消息 系列文章目录 目录 Mqtt简单实现发送消息 订阅消息 系列文章目录 安装好Mosquitto maven引入依赖 创建发布客户端 PublishClient java 创建订阅客户端 Subscribe
Powered by Hwhale