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

1、Java代码

 package com.mao.mqtt;

 import java.text.SimpleDateFormat;
import java.util.Date; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttTopic; /**
*
* 功能描述:MQTT测试
* 创建人: mao2080@sina.com
* 创建时间:2017年7月4日 下午5:08:59
* 修改人: mao2080@sina.com
* 修改时间:2017年7月4日 下午5:08:59
*/
public class MQTTTest_tcp { /**MQTT服务端ip及端口*/
private static String host = "ws://ip:8882"; /**账号*/
private static String username = "li2080"; /**密码*/
private static String password = "123"; /**订阅的主题*/
private static String subTopic = "a/b/c"; /**clientID*/
private static String clientId = "li2080"; /**发布的主题*/
private static String pubTopic = "a/b/c"; /**MQTT-Client*/
private static MqttClient client; /**MQTT-Client*/
private static int uuid = 0; /**
* @throws InterruptedException
* @throws MqttException */
public static void main(String[] args) throws InterruptedException, MqttException { // 订阅消息的方法
subscribe();
//
publish();
} /**
*
* 描述:订阅信息
* @author mao2080@sina.com
* @created 2017年7月4日 下午4:53:47
* @since
* @return
*/
public static void subscribe() {
try {
// 创建MqttClient
MQTTTest_tcp.getClient().setCallback(new MqttCallback() { public void connectionLost(Throwable arg0) { } public void messageArrived(String topic, MqttMessage message) throws Exception {
System.out.println("MQTT Rece:" + message.toString());
} public void deliveryComplete(IMqttDeliveryToken token) { } });
MQTTTest_tcp.getClient().subscribe(subTopic, 0);
System.out.println("连接状态:" + client.isConnected());
} catch (Exception e) {
e.printStackTrace();
}
} /**
*
* 描述:获取MqttClient
* @author mao2080@sina.com
* @created 2017年7月6日 上午9:56:37
* @since
* @return
* @throws MqttException
*/
public static MqttClient getClient() throws MqttException{
try {
if(client == null){
client = new MqttClient(host, clientId);
MqttConnectOptions conOptions = new MqttConnectOptions();
conOptions.setUserName(username);
conOptions.setPassword(password.toCharArray());
conOptions.setCleanSession(true);
client.connect(conOptions);
}
if(!client.isConnected()){
client.reconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
return client;
} /**
*
* 描述:发布信息
* @author mao2080@sina.com
* @throws MqttException
* @created 2017年7月4日 下午4:53:32
* @since
*/
public static void publish() throws MqttException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sendMsg = "{time:"+sdf.format(new Date())+", content:"+com.lds.iot.common.util.UUIDUtil.getLowerLetterNumber(15)+", from: java console}";
try {
MqttTopic topic = MQTTTest_tcp.getClient().getTopic(pubTopic);
MqttMessage message = new MqttMessage(sendMsg.getBytes());
message.setQos(0);
topic.publish(message);
System.out.println("MQTT Send:" + sendMsg);
} catch (Exception e) {
e.printStackTrace();
}
} }

2、Maven配置

 <dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.0</version>
</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. ASP.NET配置KindEditor文本编辑器

    文本编辑器:CKEditor和CKFinder  KindEditor 1.KindEditor KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开 ...

  2. sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value: '\\xE6\\xB1\\x89\\xE8\\xAF\\xAD...' for column 'className' at row 1") [SQL: INSERT INTO classmessage (`classId

    sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value: '\\xE ...

  3. 问题:tomcat启动后,可以访问主页面,但是无法访问dubbo-admin

    原因分析: 直接查看logs中的日志文件,发现一行 [Catalina-utility-1] org.apache.catalina.startup.HostConfig.undeploy Undep ...

  4. Redhat 7修改主机名

    修改主机名: Linux master2 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 G ...

  5. 织梦DEDEcms5.7解决arclist标签调用副栏目文章

    使用arclist标签调用文章的时候才发现,根本无法调用相关文章. 下面给出解决办法,希望帮到需要的人. 找到/include/taglib/arclist.lib.php文件然后打开.然后在大约30 ...

  6. Clob类型转换为String

    SQL CLOB 是内置类型,它将字符大对象存储为数据库表某一行中的一个列值,使用CHAR来存储数据,如XML文档. 如下是一个Clob转换为String的静态方法,可将其放在自己常用的工具类中,想直 ...

  7. Codeforces 992 范围内GCD,LCM要求找一对数 衣柜裙子期望

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

  8. 基于Redis实现分布式锁(转载)

    原文地址:http://blog.csdn.net/ugg/article/details/41894947 Redis命令介绍使用Redis实现分布式锁,有两个重要函数需要介绍 SETNX命令(SE ...

  9. GlusterFS 分布式文件系统

    简介 官方文档:https://docs.gluster.org/en/latest/Quick-Start-Guide/Architecture/ Glusterfs是一个开源的分布式文件系统,是S ...

  10. The Preliminary Contest for ICPC Asia Nanchang 2019 E. Magic Master

    题目:https://nanti.jisuanke.com/t/41352 思路:约瑟夫环 由题意得第k张牌即求 k 为 第几个 报数为m+1 的单位 用队列模拟即可 #include<bits ...