特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/

1、Java代码

  1. package com.mao.mqtt;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5.  
  6. import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
  7. import org.eclipse.paho.client.mqttv3.MqttCallback;
  8. import org.eclipse.paho.client.mqttv3.MqttClient;
  9. import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
  10. import org.eclipse.paho.client.mqttv3.MqttException;
  11. import org.eclipse.paho.client.mqttv3.MqttMessage;
  12. import org.eclipse.paho.client.mqttv3.MqttTopic;
  13.  
  14. /**
  15. *
  16. * 功能描述:MQTT测试
  17. * 创建人: mao2080@sina.com
  18. * 创建时间:2017年7月4日 下午5:08:59
  19. * 修改人: mao2080@sina.com
  20. * 修改时间:2017年7月4日 下午5:08:59
  21. */
  22. public class MQTTTest_tcp {
  23.  
  24. /**MQTT服务端ip及端口*/
  25. private static String host = "ws://ip:8882";
  26.  
  27. /**账号*/
  28. private static String username = "li2080";
  29.  
  30. /**密码*/
  31. private static String password = "123";
  32.  
  33. /**订阅的主题*/
  34. private static String subTopic = "a/b/c";
  35.  
  36. /**clientID*/
  37. private static String clientId = "li2080";
  38.  
  39. /**发布的主题*/
  40. private static String pubTopic = "a/b/c";
  41.  
  42. /**MQTT-Client*/
  43. private static MqttClient client;
  44.  
  45. /**MQTT-Client*/
  46. private static int uuid = 0;
  47.  
  48. /**
  49. * @throws InterruptedException
  50. * @throws MqttException */
  51. public static void main(String[] args) throws InterruptedException, MqttException {
  52.  
  53. // 订阅消息的方法
  54. subscribe();
  55. //
  56. publish();
  57. }
  58.  
  59. /**
  60. *
  61. * 描述:订阅信息
  62. * @author mao2080@sina.com
  63. * @created 2017年7月4日 下午4:53:47
  64. * @since
  65. * @return
  66. */
  67. public static void subscribe() {
  68. try {
  69. // 创建MqttClient
  70. MQTTTest_tcp.getClient().setCallback(new MqttCallback() {
  71.  
  72. public void connectionLost(Throwable arg0) {
  73.  
  74. }
  75.  
  76. public void messageArrived(String topic, MqttMessage message) throws Exception {
  77. System.out.println("MQTT Rece:" + message.toString());
  78. }
  79.  
  80. public void deliveryComplete(IMqttDeliveryToken token) {
  81.  
  82. }
  83.  
  84. });
  85. MQTTTest_tcp.getClient().subscribe(subTopic, 0);
  86. System.out.println("连接状态:" + client.isConnected());
  87. } catch (Exception e) {
  88. e.printStackTrace();
  89. }
  90. }
  91.  
  92. /**
  93. *
  94. * 描述:获取MqttClient
  95. * @author mao2080@sina.com
  96. * @created 2017年7月6日 上午9:56:37
  97. * @since
  98. * @return
  99. * @throws MqttException
  100. */
  101. public static MqttClient getClient() throws MqttException{
  102. try {
  103. if(client == null){
  104. client = new MqttClient(host, clientId);
  105. MqttConnectOptions conOptions = new MqttConnectOptions();
  106. conOptions.setUserName(username);
  107. conOptions.setPassword(password.toCharArray());
  108. conOptions.setCleanSession(true);
  109. client.connect(conOptions);
  110. }
  111. if(!client.isConnected()){
  112. client.reconnect();
  113. }
  114. } catch (Exception e) {
  115. e.printStackTrace();
  116. }
  117. return client;
  118. }
  119.  
  120. /**
  121. *
  122. * 描述:发布信息
  123. * @author mao2080@sina.com
  124. * @throws MqttException
  125. * @created 2017年7月4日 下午4:53:32
  126. * @since
  127. */
  128. public static void publish() throws MqttException {
  129. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  130. String sendMsg = "{time:"+sdf.format(new Date())+", content:"+com.lds.iot.common.util.UUIDUtil.getLowerLetterNumber(15)+", from: java console}";
  131. try {
  132. MqttTopic topic = MQTTTest_tcp.getClient().getTopic(pubTopic);
  133. MqttMessage message = new MqttMessage(sendMsg.getBytes());
  134. message.setQos(0);
  135. topic.publish(message);
  136. System.out.println("MQTT Send:" + sendMsg);
  137. } catch (Exception e) {
  138. e.printStackTrace();
  139. }
  140. }
  141.  
  142. }

2、Maven配置

  1. <dependency>
  2. <groupId>org.eclipse.paho</groupId>
  3. <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
  4. <version>1.2.0</version>
  5. </dependency>

3、运行效果

Java连接MQTT服务-ws方式的更多相关文章

  1. Java连接MQTT服务-wss方式

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  2. Java连接MQTT服务-tcp方式

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  3. java连接MySQL数据库的方式

    Java连接数据库的几种方法 *说明 1.以MySQL数据库为例 2.分为四个步骤: 建立数据库连接, 向数据库中提交sql 处理数据库返回的结果 关闭数据库连接 一:JDBC 1.建立数据库连接 只 ...

  4. 1.java连接pulsar服务

    目录 是什么 安装 Java客户端 1.引入GAV 2.创建配置项 3.验证测试 其他及代码下载 是什么 Pulsar 是一个用于服务器到服务器的消息系统,具有多租户.高性能等优势.详见 安装 本文主 ...

  5. Java 连接 Memcached 服务

    原文:http://www.runoob.com/memcached/java-memcached.html mac下安装和配置Memcached:http://www.pchou.info/open ...

  6. Memcached常用语法与java连接服务

    memcached常用语法及java使用方式 Author:SimpleWu Memcached 存储命令 Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中 ...

  7. Dynamics CRM 非声明验证方式下连接组织服务的两种方式的性能测试

    今天看了勇哥的博文"http://luoyong0201.blog.163.com/blog/static/1129305201510153391392/",又认识到了一种新的连接 ...

  8. MongoDB第三天(正则,管道,聚合,字符串,算术,日期,java连接MongoDB)

    部分正则表达式: i:忽略大小写 m:多行查找 x:设置 x 选项后,正则表达式中的非转义的空白字符将被忽略.   s:允许点字符(即.)匹配包括换行符在内的所有字符. w:匹配包括下划线的任何单词字 ...

  9. Java连接Hive使用Zookeeper的方式

    Java连接Hive的方式就是通过JDBC的方式来连接,URL为jdbc:hive2://host:port/db;principal=X@BIGDATA.COM等,这种方式是直接连接HiveServ ...

随机推荐

  1. 分布式---Paxos算法

    5.Paxos   Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致.一个典型的场景就是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最 ...

  2. response.getWriter().wirte和out.print()的区别

    1.首先介绍write()和print()方法的区别:  (1).write():仅支持输出字符类型数据,字符.字符数组.字符串等  (2).print():可以将各种类型(包括Object)的数据通 ...

  3. position详解

    本文旨在普及一下position的用法,CSS中position的使用率相当之高,对于新入行的小白,不仅要知其然,还要知其所以然. position(定位类型),主要有4种属性值 : static.f ...

  4. HTML 5的革新之一:语义化标签一节元素标签。

    摘至于:<HTML 5的革新——语义化标签(一)> HTML 5的革新之一:语义化标签一节元素标签. 在HTML 5出来之前,我们用div来表示页面章节,但是这些div都没有实际意义.(即 ...

  5. mysql explain解析一 extra中的using index,using where,using index condition

    1.简单介绍 using index 和using where只要使用了索引我们基本都能经常看到,而using index condition则是在mysql5.6后新加的新特性,我们先来看看mysq ...

  6. Python测试开发必知必会-PEP

    互联网发展了许多年,不仅颠覆了很多行业,还让很多职位有了更多的用武之地.产品发布迭代速度不断加快,让测试开发这个岗位简直火得不要不要的. Python语言,作为一种更接近人来自然语言的开发语言,以简洁 ...

  7. 白盒测试之JUnit与SpringTest的完美结合

    通过白盒的单元测试可以验证程序基本功能的有效性,从而保证整个系统的质量,功在一时,利在千秋.目前80%以上公司后台还是基于java,尤其是后台大量采用Spring框架,我们这里采用Junit和Spri ...

  8. Codeforces 991 车牌号组合数学计算

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...

  9. 并查集+时光倒流 || [JSOI2008]星球大战starwar || BZOJ 1015 || Luogu P1197

    题面:P1197 [JSOI2008]星球大战 题解: 坑点有点多啊,加上我本来就有点头昏脑涨,一道水题写了一万年.. 并查集不支持拆开(但是可以撤销合并),只支持合并.所以把询问离线了,从最后状态到 ...

  10. maven项目编译报错:Type Dynamic Web Module 3.0 requires Java 1.6 or newer.

    在maven的pom.xml文件中增加: <build>   <plugins>     <plugin>         <groupId>org.a ...