mqtt java

MQTT(MQ遥测传输)是一种轻量级的发布/订阅消息传递协议。 MQTT在物联网应用程序中得到了广泛使用,因为它被设计为在占用空间小的系统上运行在远程位置。

MQTT 3.1是OASIS标准,您可以在http://mqtt.org/上找到所有信息。

本文将指导您完成运行第一个MQTT应用程序的各个步骤:

  1. 安装并启动MQTT代理
  2. 编写一个发布消息的应用程序
  3. 编写使用消息的应用程序

GitHub上提供了示例应用程序的源代码。

先决条件

  • Apache Maven 3.x
  • 吉特

安装并启动MQTT代理

您可以找到许多MQTT经纪人,在本示例中,我将使用最常见的经纪人之一Mosquitto 。

您可以从二进制软件包下载并安装。 我已经使用Homebrew在Mac上安装了它:

$ brew install mosquitto

使用默认配置启动MQTT Broker

$ /usr/local/sbin/mosquitto

发布和使用消息

打开两个终端窗口,然后运行以下命令:

消耗

$ mosquitto_sub -h 127.0.0.1 -t iot_data

发布

$ mosquitto_pub -h 127.0.0.1 -t iot_data -m "Hello world"

您应该在消费者/订户窗口中看到消息Hello world

编写您的第一个MQTT应用程序

在此示例中,我将编写一个小型Java应用程序,因为这是我在全局项目中使用的语言。

Maven依赖

将Eclipse Paho依赖项添加到您的Maven项目中

<dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.1.0</version>
</dependency>

发布消息

发布消息非常容易,创建一个MqttClient并将其用于发布主题。

MqttClient client = new MqttClient("tcp://localhost:1883", MqttClient.generateClientId());
client.connect();
MqttMessage message = new MqttMessage();
message.setPayload("Hello world from Java".getBytes());
client.publish("iot_data", message);
client.disconnect();

您还有许多其他选项和配置,可以在发布消息时使用,例如安全性,服务质量(QoS)等。 但是在这篇文章中,我只想简单地展示发布和使用MQTT消息有多么容易。

消费信息

要使用消息,您需要实现org.eclipse.paho.client.mqttv3.MqttCallback ,它将接收消息并在Subscriber应用程序的MqttClient中使用了此Callback类。

回调类:

public class SimpleMqttCallBack implements MqttCallback {public void connectionLost(Throwable throwable) {System.out.println("Connection to MQTT broker lost!");}public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {System.out.println("Message received:\n\t"+ new String(mqttMessage.getPayload()) );}public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {// not used in this example}
}

在订阅服务器应用程序中使用此回调类,如下所示:

MqttClient client=new MqttClient("tcp://localhost:1883", MqttClient.generateClientId());
client.setCallback( new SimpleMqttCallBack() );
client.connect();

就像对于发布者一样,我正在使用没有任何选择(QoS,安全性)的代理和客户端。

生成并运行应用程序

1-获取示例代码

从GitHub克隆项目

$ git clone https://github.com/tgrall/mqtt-sample-java.git

2-使用Apache Maven构建项目:

这个项目是一个简单的Java应用程序,它使用Eclipse Paho库运行发布者和订阅者。

$ mvn clean package

为了方便起见,示例程序项目被设置为使maven包目标生成单个可执行文件/mqtt-sample ,其中包括所有示例程序和依赖项。

3-运行订阅服务器

订阅者将接收并打印在iot_data主题上发布的所有消息。

$ ./target/mqtt-sample subscriber

4-运行发布者

使用以下命令运行发布者,第二个参数是要发布的消息

$ ./target/mqtt-sample publisher "My first MQTT message..."

结论

在本文中,您学习了如何:

  • 安装并启动MQTT经纪人Mosquitto
  • 创建用Java开发的发布者和订阅者

选择本文非常简单,可以快速运行您的第一个MQTT应用程序。 我写这篇文章是我正在从事的全球物联网项目的一部分,该项目将捕获设备数据,并使用MQTT和MapR Streams将它们发布到MapR融合数据平台中。 这就是为什么我在应用程序中使用Java。 您可以使用任何MQTT客户端库来构建发布者和订阅者。

翻译自: https://www.javacodegeeks.com/2017/01/getting-started-mqtt-java.html

mqtt java

mqtt java_MQTT和Java入门相关推荐

  1. Java入门培训班怎么选择

    想要学习java技术,小编一直给小伙伴推荐的是报班学习,目前市面上的java培训机构有很多,对于java培训班的选择很多小伙伴都比较迷茫,下面小编就为大家详细的介绍一下Java入门培训班怎么选择的问题 ...

  2. Java入门学习注意事项有哪些?

    想要学好java技术,做好学习规划路线和注意事项是非常重要的,尤其是零基础学员,Java涉及到的知识点非常多,我们需要制定合理的Java学习路线图,这样会事半功倍,下面小编和大家总结一下Java入门学 ...

  3. Java实用教程笔记 Java入门

    Java入门 JDBC Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新 ...

  4. Java入门(一):Hello World !

    前言 从今天开始,准备写Java Web开发的系列文章,毕竟自己主攻的还是Java方向,Python只是业余学习的兴趣使然,在第二技能还没有培养成熟前,做好第一技能的巩固和提高是很有必要的.从正式入行 ...

  5. 《Java入门经典(第7版)》—— 6.11 练习

    本节书摘来异步社区<Java入门经典(第7版)>一书中的第6章,第6.11节,作者:[美]Rogers Cadenhead(罗格斯 卡登海德),更多章节内容可以访问云栖社区"异步 ...

  6. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  7. 【极客学院每日1课 】Java入门与常用技巧

    2019独角兽企业重金招聘Python工程师标准>>> Java是Android开发者必学的基础编程语言.你的基础怎么样? 遥想当年,小乔还未出嫁,小编在大学里面,啃书本,听教授在课 ...

  8. Java必备:java入门、java学习

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为北京尚学堂原创文章,未经允许不得转载. 1.Java入门 1-1.Java具有那些适合在Internet环境中 ...

  9. Java入门学习笔记[狂神说Java]

    写在前面: 本文根据B站狂神说Java 与菜鸟教程 整理而来,仅供个人学习使用,如有侵权,请联系删除. 文章目录 IDEA使用 Java基础01:注释 Java基础02:数据类型 Java基础03:类 ...

最新文章

  1. Eclipse中异常断点问题
  2. linux putty 永久修改字体大小
  3. DP——最优矩阵链乘最优三角剖分
  4. 【转】CT球管小知识--热容量
  5. 先天性脑部发育异常_儿童脑发育不良的3大“诱因”,若孩子出现这5种异常,要警惕...
  6. JZOJ 5914. 盟主的忧虑
  7. 学习mysql随笔——mysql的安装启动
  8. java代码注释规范
  9. Redis学习之lpush命令
  10. getinfo怎么用php,PHP的函数curl-curl_getinfo
  11. android 手机2k分辨率,2K屏幕手机有哪些 2016六款2K分辨率手机推荐
  12. HDU - 6287 口算训练 (二分+思维)
  13. Makefile--如何将当前文件下的所有*.cpp文件与*.c文件全部生成相应的可执行文件
  14. 格式化的硬盘能恢复吗 硬盘格式化以后能恢复吗
  15. 程序员必备的11个辅助开发的软件神器
  16. 人工智能的必须的数学基础和编程基础
  17. 大数据时代数据资产管理“五星模型”:三个基础两个飞轮
  18. 红米note10和红米note10pro的区别
  19. 华为终端云服务HMS赋能智能汽车,AITO问界M5 36城同启交付
  20. Linux 的chmod权限数字777、755、644代表什么?

热门文章

  1. [COCI2017-2018#5] Pictionary(并查集+dfs)
  2. YBTOJ洛谷P4298:祭祀(二分图匹配)
  3. AT3860-[AGC020F]Arcs on a Circle【dp】
  4. ARC106E-Medals【hall定理,高维前缀和】
  5. P2272-[ZJOI2007]最大半连通子图【tarjan,缩点】
  6. 【2018.4.21】模拟赛之三-ssl2404 上学【深度优先搜索】
  7. codeforces1012 B. Chemical table(并查集+思维)
  8. Korney Korneevich and XOR(CF750F1/F2)
  9. 动态规划训练8 [E - Multiplication Puzzle POJ1651]
  10. Hadoop生态hive(五)Hive QL数据库