热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pahomqttjavaclientdemo

pom依赖org.eclipse.pahoorg.eclipse.paho.client.mqt

==pom依赖==


org.eclipse.paho
org.eclipse.paho.client.mqttv3
1.2.1

 


==Java样例代码==

package com.rexel.core.common.utils.mqtt;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
/**
* MQTT Utils
*
*
@author admin
* @date 2022-2-24
*/
public class MqttUtils {
public static void main(String[] args) {
String serverUrl
= "tcp://36.137.154.92:1883";
String clientId
= "client111";
String username
= "root";
String password
= "test123";
String topic
= "qch_test1";
try {
MqttConnectOptions options
= new MqttConnectOptions();
// 设置连接的用户名
options.setUserName(username);
// 设置连接的密码
options.setPassword(password.toCharArray());
// 设置是否清空session
// 设置为false表示服务器会保留客户端的连接记录
// 设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(false);
// 设置会话心跳时间
options.setAutomaticReconnect(true);
// 设置超时时间,单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间,单位为秒
// 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
// host:服务连接地址
// clientIId:连接MQTT的客户端ID,一般以唯一标识符表示
// MemoryPersistence:clientId的保存形式,默认为以内存保存
MqttClient client = new MqttClient(serverUrl, clientId, new MemoryPersistence());
// 设置回调
MyMqttCallback callback = new MyMqttCallback(topic, client);
client.setCallback(callback);
// 建立连接
client.connect(options);
// 发送测试消息
MqttMessage pubMsg = new MqttMessage();
pubMsg.setPayload(
"我的第一个MQTT消息".getBytes());
pubMsg.setQos(
2);
// 当订阅消费端服务器重新连接MQTT服务器时,总能拿到该主题最新消息, 这个时候我们需要把retained设置为true;
// 当订阅消费端服务器重新连接MQTT服务器时,不能拿到该主题最新消息,只能拿连接后发布的消息,这个时候我们需要把 retained设置为false;
pubMsg.setRetained(true);
client.publish(topic, pubMsg);
}
catch (MqttException e) {
e.printStackTrace();
}
}
static class MyMqttCallback implements MqttCallbackExtended {
private final String topic;
private final MqttClient client;
public MyMqttCallback(String topic, MqttClient client) {
this.topic = topic;
this.client = client;
}
@Override
public void connectComplete(boolean b, String s) {
System.out.println(
"连接成功");
// 订阅消息
// QoS0,At most once,至多一次;
// QoS1,At least once,至少一次;
// QoS2,Exactly once,确保只有一次。
int[] qos = {2};
String[] topics
= {topic};
try {
client.subscribe(topics, qos);
}
catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void connectionLost(Throwable throwable) {
System.out.println(
"连接断开");
}
@Override
public void messageArrived(String topics, MqttMessage message) {
System.out.println(
"接收消息主题:" + topics);
System.out.println(
"接收消息Qos:" + message.getQos());
System.out.println(
"接收消息内容:" + new String(message.getPayload()));
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println(
"deliveryComplete---------" + iMqttDeliveryToken.isComplete());
}
}
}

 


==执行结果==

连接成功
deliveryComplete
---------true
接收消息主题:qch_test1
接收消息Qos:
2
接收消息内容:我的第一个MQTT消息

 



推荐阅读
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • Python网络编程:深入探讨TCP粘包问题及解决方案
    本文详细探讨了TCP协议下的粘包现象及其产生的原因,并提供了通过自定义报头解决粘包问题的具体实现方案。同时,对比了TCP与UDP协议在数据传输上的不同特性。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 可参照github代码:https:github.comrabbitmqrabbitmq-tutorialsblobmasterjavaEmitLogTopic.ja ... [详细]
  • 深入解析Nacos服务自动注册机制
    本文将探讨Nacos服务自动注册的具体实现方法,特别是如何通过Spring事件机制完成服务注册。通过对Nacos源码的详细分析,帮助读者理解其背后的原理。 ... [详细]
  • 个人博客:打开链接依赖倒置原则定义依赖倒置原则(DependenceInversionPrinciple,DIP)定义如下:Highlevelmo ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • D17:C#设计模式之十六观察者模式(Observer Pattern)【行为型】
    一、引言今天是2017年11月份的最后一天,也就是2017年11月30日,利用今天再写一个模式,争取下个月(也就是12月份& ... [详细]
  • 本文介绍了如何使用Node.js通过两种不同的方法连接MongoDB数据库,包括使用MongoClient对象和连接字符串的方法。每种方法都有其特点和适用场景,适合不同需求的开发者。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
author-avatar
mobiledu2502886233
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有