基于:Eclipse paho 的MQTT Java客户端实现数据的发送和接收

【mqtt】Java实现mqtt的订阅与发布 maven引用 <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.1.0</version> </dependency> mqtt订阅 完整代码如下: import com.cn.common.ut 阅读详情


MQTT(MQ Telemetry Transport)是IBM开发的一种网络应用层的协议

使用场景:

1、不可靠、网络带宽小的网络

2、运行的设备CPU、内存非常有限


特点:

1、基于发布/订阅模型的协议

2、他是二进制协议,二进制的特点就是紧凑、占用空间小。他的协议头只有2个字节

3、提供了三种消息可能性保障:最多一次 0、最少一次 1、只有一次 2

maven依赖

[html]  view plain  copy
  1. <dependency>  
  2.     <groupId>org.eclipse.paho</groupId>  
  3.     <artifactId>org.eclipse.paho.client.mqttv3</artifactId>  
  4.     <version>1.1.1</version>  
  5. </dependency>  

发送消息示例

[java]  view plain  copy
  1. import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;  
  2. import org.eclipse.paho.client.mqttv3.MqttCallback;  
  3. import org.eclipse.paho.client.mqttv3.MqttClient;  
  4. import org.eclipse.paho.client.mqttv3.MqttConnectOptions;  
  5. import org.eclipse.paho.client.mqttv3.MqttException;  
  6. import org.eclipse.paho.client.mqttv3.MqttMessage;  
  7. import org.eclipse.paho.client.mqttv3.MqttPersistenceException;  
  8. import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;  
  9.   
  10. /** 
  11.  * 发送数据到mqtt服务器 
  12.  * @author:涂有 
  13.  * @date 2017年8月16日 下午11:15:22 
  14.  */  
  15. public class PubMsg {  
  16.     private static int qos = 2; //只有一次  
  17.     private static String broker = "tcp://10.100.124.206:1883";  
  18.     private static String userName = "tuyou";  
  19.     private static String passWord = "tuyou";  
  20.   
  21.       
  22.     private static MqttClient connect(String clientId,String userName,  
  23.             String password) throws MqttException {  
  24.         MemoryPersistence persistence = new MemoryPersistence();  
  25.         MqttConnectOptions connOpts = new MqttConnectOptions();  
  26.         connOpts.setCleanSession(true);  
  27.         connOpts.setUserName(userName);  
  28.         connOpts.setPassword(password.toCharArray());  
  29.         connOpts.setConnectionTimeout(10);  
  30.         connOpts.setKeepAliveInterval(20);  
  31. //      String[] uris = {"tcp://10.100.124.206:1883","tcp://10.100.124.207:1883"};  
  32. //      connOpts.setServerURIs(uris);  //起到负载均衡和高可用的作用  
  33.         MqttClient mqttClient = new MqttClient(broker, clientId, persistence);  
  34.         mqttClient.setCallback(new PushCallback("test"));  
  35.         mqttClient.connect(connOpts);  
  36.         return mqttClient;  
  37.     }  
  38.   
  39.     private static void pub(MqttClient sampleClient, String msg,String topic)   
  40.             throws MqttPersistenceException, MqttException {  
  41.         MqttMessage message = new MqttMessage("ertwersdfas".getBytes());  
  42.         message.setQos(qos);  
  43.         message.setRetained(false);  
  44.         sampleClient.publish(topic, message);  
  45.     }  
  46.       
  47.     private static void publish(String str,String clientId,String topic) throws MqttException{  
  48.         MqttClient mqttClient = connect(clientId,userName,passWord);  
  49.   
  50.         if (mqttClient != null) {  
  51.             pub(mqttClient, str, topic);  
  52.             System.out.println("pub-->" + str);  
  53.         }  
  54.   
  55.         if (mqttClient != null) {  
  56.             mqttClient.disconnect();  
  57.         }  
  58.     }  
  59.   
  60.     public static void main(String[] args) throws MqttException {  
  61.         publish("message content","client-id-0","$share/edge/server/public/a");  
  62.     }  
  63. }  
  64.   
  65. class PushCallback implements MqttCallback {  
  66.     private String threadId;  
  67.     public PushCallback(String threadId){  
  68.         this.threadId = threadId;  
  69.     }  
  70.       
  71.     public void connectionLost(Throwable cause) {  
  72.           
  73.     }  
  74.   
  75.     public void deliveryComplete(IMqttDeliveryToken token) {  
  76. //       System.out.println("deliveryComplete---------" + token.isComplete());  
  77.     }  
  78.   
  79.     public void messageArrived(String topic, MqttMessage message) throws Exception {  
  80.         String msg = new String(message.getPayload());  
  81.         System.out.println(threadId + " " + msg);  
  82.     }  
  83. }  


消费消息示例

[java]  view plain  copy
  1. import org.eclipse.paho.client.mqttv3.MqttClient;  
  2. import org.eclipse.paho.client.mqttv3.MqttConnectOptions;  
  3. import org.eclipse.paho.client.mqttv3.MqttException;  
  4. import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;  
  5.   
  6. public class SubMsg {  
  7.   
  8. //   private static String topic = "$share/testgroup/wyptest1";  
  9. //   private static String topic = "$queue/wyptest1";  
  10. //   private static String topic = "wyptest1";  
  11.      private static int qos = 2;  
  12.      private static String broker = "tcp://10.100.124.207:1883";  
  13.      private static String userName = "tuyou";  
  14.      private static String passWord = "tuyou";  
  15.       
  16.   
  17.      private static MqttClient connect(String clientId) throws MqttException{  
  18.          MemoryPersistence persistence = new MemoryPersistence();  
  19.          MqttConnectOptions connOpts = new MqttConnectOptions();  
  20. //       String[] uris = {"tcp://10.100.124.206:1883","tcp://10.100.124.206:1883"};  
  21.          connOpts.setCleanSession(false);  
  22.          connOpts.setUserName(userName);  
  23.          connOpts.setPassword(passWord.toCharArray());  
  24.          connOpts.setConnectionTimeout(10);  
  25.          connOpts.setKeepAliveInterval(20);  
  26. //         connOpts.setServerURIs(uris);  
  27. //         connOpts.setWill(topic, "close".getBytes(), 2, true);  
  28.          MqttClient mqttClient = new MqttClient(broker, clientId, persistence);  
  29.          mqttClient.connect(connOpts);  
  30.          return mqttClient;  
  31.      }  
  32.        
  33.      public static void sub(MqttClient mqttClient,String topic) throws MqttException{  
  34.          int[] Qos  = {qos};  
  35.          String[] topics = {topic};  
  36.          mqttClient.subscribe(topics, Qos);  
  37.      }  
  38.        
  39.        
  40.     private static void runsub(String clientId, String topic) throws MqttException{  
  41.         MqttClient mqttClient = connect(clientId);  
  42.         if(mqttClient != null){  
  43.             sub(mqttClient,topic);  
  44.         }  
  45.     }  
  46.     public static void main(String[] args) throws MqttException{  
  47.           
  48.         runsub("client-id-1", "$share/testgroupa/edge/server/private/+");  
  49.     }  
  50. }  
使用eclipse paho在java端实现MQTT消息的收发(客户端与服务端实例) 一、MQTT(消息队列)简介MQTT(MQ Telemetry Transport)是IBM开发的一种网络应用层的协议,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。 常用的有eclipse paho、activeMQ、阿里MQTT和其他的实现,本实例使用paho1、使用场景:1、不 阅读详情

相关推荐

org.eclipse.paho.client.mqttv3 源码解析(一) 发送

这货是什么,这货能做消息推送,和其他手机端push一样有自己的协议体和算法讲究 首先看下例子使用: public void testPubSub() throws Exception { String methodName = Utility.getMethodName(); LoggingUtilities.banner(log, cclass, methodName); IMqttClient client = null; try { String top...

码灵的博客 3663

mqtt等待来自服务器响应超时,org.eclipse.paho.client mqtt客户端连接超时

客户端订阅mqtt 的时候 显示超时。第二次重起服务可能就好了,但是可能会丢消息。报错如下org.eclipse.paho.client.mqttv3.MqttException: 等待来自服务器的响应时超时at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.j...

weixin_39926943的博客 9926

springboot+阿里云物联网教程

springboot+aliyun mqtt物联网教程,springboot+阿里云物联网教程,org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter -Error connecting or subscribing to,org.eclipse.paho.client.mqttv3.MqttException: 无效客户机标识,等待来自服务器的响应时超时

renkai721的专栏 962

MQTT Java客户端Eclipse paho实现数据的发送和接收

MQTT(MQ Telemetry Transport)是IBM开发的一种网络应用层的协议 使用场景: 1、不可靠、网络带宽小的网络 2、运行的设备CPU、内存非常有限   特点: 1、基于发布/订阅模型的协议 2、他是二进制协议,二进制的特点就是紧凑、占用空间小。他的协议头只有2个字节 3、提供了三种消息可能性保障:最多一次 0、最少一次 1、只有一次 2   maven依赖...

Code changes the world! 3万+

使用Eclipse Paho进行MQTT协议测试与应用

本文还有配套的精品资源,点击获取 简介:MQTT是一种常用于物联网通信的轻量级消息协议。本课程重点讲解如何利用Eclipse Paho库,这是一个提供多语言客户端库的开源项目,作为MQTT测试工具连接到mosquitto服务器进行消息发布与订阅。通过Eclipse IDE集成Paho工具,开发者可以进行MQTT应用程序的测试和调试。包括使用 paho.exe ...

weixin_35749545的博客 2178

RK3568驱动XS9922B:AHD/CVBS双模摄像头兼容性实战

在嵌入式视频开发中,摄像头驱动的稳定性与兼容性往往决定项目交付质量。Linux内核的V4L2框架提供了统一的视频采集抽象,从v4l2_subdev子设备到media controller链路,再到用户态视频节点,每一层都需要精确配置。对于RK3568这类边缘计算平台,其MIPI CSI接口和自研ISP配合RKCIF,构成了完整的多路视频接入通路。当需要接入模拟视频解码芯片时,驱动设计就需同时考虑AHD高清协议与CVBS标清信号的模式切换、格式协商以及寄存器配置。XS9922B作为支持双模输入的解码芯片,可与

weixin_34216614的博客 350

MQTT的简单Demo

MQTT是物联网收发数据的一种协议 Elipse Paho是一个开源项目实现了MQTT的Clinent可以方便直接操纵数据的上传和下载 The Eclipse Paho project provides open-source client implementations of MQTT and MQTT-SN messaging protocols aimed at new, existin...

weixin_34304013的博客 965

手把手教你用二茂铁催化剂搞定醇的动力学拆分(保姆级实验避坑指南)

本文详细介绍了使用平面手性二茂铁催化剂进行醇的动力学拆分的全流程,包括催化剂选择与制备、反应体系搭建与条件优化、实时监测与反应淬灭、产物分离与纯化等关键步骤。通过实战案例和避坑指南,帮助实验人员实现>98% ee的拆分效果,特别适合需要高光学纯度二级芳基醇或烯丙醇的研究者。

weixin_30500105的博客 440

Java连接mqtt服务器(发送、订阅)

1.模拟客户端接收消息 import java.util.concurrent.ScheduledExecutorService; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho...

云下的你 2万+

SpringBoot实战——仿b站项目(一)

热部署就是当应用程序这种运行的时候升级冉家或者修改某一部分代码、配置文件时,无需手动启动应用,即可修改的部分生效工具 + IDEA配置。

weixin_52880572的博客 3456

Unity物理驱动3D汽车实现:从刚体控制到参数调优

在游戏开发中,刚体物理是实现真实物体运动与交互的核心技术。通过Unity的物理引擎,开发者可以模拟重力、碰撞、摩擦力等物理行为,为游戏世界注入真实感。其技术价值在于能够以符合物理规律的方式驱动游戏对象,避免穿墙、无视惯性等问题,从而提升游戏体验的真实性和沉浸感。这一原理广泛应用于角色控制、车辆模拟、物体破坏等场景。本文以3D小汽车为例,详细解析了如何通过Rigidbody组件施加力与扭矩,并利用C#脚本实现玩家输入逻辑,完成一辆可操控、能碰撞的物理驱动汽车。文中重点探讨了AddForce与角速度控制两种方案

weixin_34380948的博客 502

Eclipse paho实现的MQTT Java客户端

Eclipse paho是eclipse基金会下面的一个开源项目,基于MQTT协议的客户端,用多种语言的实现,什么是MQTT协议?不废话,自己百度去 这几年的很火的物联网多是基于这个协议来通信的。 Eclipse paho客户端支持的语言: 这里是我用java swing做的一个MQTT通信客户端,实现了连接MQTT服务器 订阅-发送消息 MQTT服务器搭建在树莓派3b上 使用

文博那些事儿 1万+

基于51单片机+SYN6288语音播报

51单片机控制SYN6288语音播报资料SYN6288模块原理图语音合成命令接线如何接线实现原理程序代码main.csyn6288.cuart.cdelay.c基于 51单片机的其他项目基于51单片机+遥控灯基于51单片机+LCD1602显示基于51单片机+红外遥控解码+LCD1602显示基于51单片机+DHT11温湿度+LCD1602显示基于51单片机+DS18B20温度测温器+LCD1602显示尾声 资料 我用的是绿深电子技术的模块,资料也挺齐全的。也有相关例程。 SYN6288模块原理图 语音合成

weixin_47457689的博客 3万+

Java实战——使用Eclipse Paho库发送MQTT消息

通过本文的示例,你已经掌握了如何使用Java的Eclipse Paho库实现MQTT消息的发送功能。这个实用的例子不仅适合初学者快速入门,也可以作为企业级项目中消息发布模块的参考模板。

Takumilove的博客 2541

科研党必备!用Requests+BeautifulSoup升级版Nature爬虫(含PDF下载功能)

本文介绍了一套基于Python Requests和BeautifulSoup的Nature期刊智能爬虫系统,专为科研人员设计,可自动抓取论文标题、摘要及开放获取的PDF文档。系统采用模块化设计,包含请求管理、PDF检测和邮件通知等功能,确保高效合规地获取学术资源,提升科研效率。

weixin_29041767的博客 258

【异常】Cursor IDE 扩展主机超时错误处理文档The agent execution provider did not respond within 4 seconds.

该错误通常是 Cursor IDE 的临时性问题,不影响项目代码。大多数情况下,重新加载窗口或重启 IDE 即可解决。如果问题持续,可按上述进阶方案排查。重新加载窗口(最快)重启 IDE检查系统资源清理缓存检查扩展更多关于 AI+教育领域的干货,可以关注我的微信公众号第一时间获取哦~

奶爸的编程之路,也就一周冷个三天 2707

Eclipse paho 实现的基于MqttAsyncClient类的 异步Java 客户端

package com.wenbo.mqtt; import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JForma.

Jerry_liu20080504的专栏 4118

汽车电子RTOS--AUTOSAR OS

AUTOSAR OS(AUTomotive Open System ARchitecture Operating System)是AUTOSAR(汽车开放系统架构)标准中的一个重要组件,它是一个专门为汽车电子控制单元(ECU)设计的实时操作系统(RTOS)。AUTOSAR OS旨在提供一个标准化的软件平台,以促进不同供应商和汽车制造商之间的组件复用和协同开发,提高软件质量和降低成本。

MHD0815的博客 1800

JAVA中MQTT的两种实现方式:Spring Integration 和Eclipse Paho

Spring Integration提供入站和出站通道适配器以支持消息队列遥测传输(MQTT)协议。当前实现使用Eclipse Paho MQTT Client库。从6.5版开始,org. eclipse.paho:org.eclipse.paho.client.mqttv3依赖项是可选依赖项,因此必须明确包含在MQTT v3支持的目标项目中。使用DefaultMqttPahoClientFactory实现两个适配器的配置。有关配置选项的更多信息,请参阅Paho留档。

深圳市多克创新科技有限公司 1461

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

eclipse paho java实现mqtt消息的发送与订阅

eclipse paho java实现mqtt消息的发送与订阅1.mqtt定义2.java代码实现2.1发送端2.2客户端 1.mqtt定义 mqtt是什么这里就不做解释了,自行百度。 2.java代码实现 2.1发送端 2.2客户端 public class ClientMQTT { private static Logger logger = LoggerFactory....

qq_16053575的博客 3521

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

paho mqtt_Paho的实用MQTT

paho mqtt 遇到诸如“此应用程序只需要向另一个服务器发送值”之类的问题时,总会有一种诱惑,将其简化为打开套接字并发送值之类的事情。 但是,这个简单的主张很快就在生产中瓦解了。 除了必须编写系统的服务器端之外,开发人员还必须应对以下事实:网络不是100%可靠的,而围绕我们的无线和移动网络在设计上并不可靠,因此很可能需要访问控制和加密。 编写代码来解决这个问题,最终会遇到更加复杂,难以测...

cunfu6353的博客 3272

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

上一篇: Java JVM 性能调优笔记
下一篇: JVM8内存、堆模型、垃圾回收器总结
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值