• Java连接MQTT服务-tcp方式


    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处: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 = "tcp://ip:1883";
     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     
    143     
    144 }

    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、运行效果

  • 相关阅读:
    Counting Sort and Radix Sort
    Naïve Bayes
    windows c/c++ 代码运行时间,毫秒级
    数学基础:四、树的应用1(利用树结构存储字典表)(待优化)
    数学基础:三、动态规划2(求解凑齐钱的最小张数)
    数学基础:三、动态规划1(求解编辑距离)
    数学基础:二、组合算法(递归)
    数学基础:一、排列算法(递归)
    idea注释模版设置
    幂等性的实现
  • 原文地址:https://www.cnblogs.com/mao2080/p/7793675.html
Copyright © 2020-2023  润新知