• 物联网消息队列协议MQTT



    简介
    Mqtt是一个物联网消息传输协议

    mosquitto是mqtt协议的一个开源实现,http://mosquitto.org/

    paho是mqtt协议的客户端实现,这里主要用paho的mqtt java客户端jar包。

    http://wiki.eclipse.org/Paho

    只需要在pom.xml中增加:

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


    mosquitto可以理解为mutt协议的server端,可部署在linux及windows上

    CentOS的安装过程:

    参照官网文档,在yum的repo配置中增加:

    [home_oojah_mqtt]
    name=mqtt (CentOS_CentOS-6)
    type=rpm-md
    baseurl=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-6/
    gpgcheck=1
    gpgkey=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-6//repodata/repomd.xml.key
    enabled=1


    mosquitto的配置文件项可参考:http://blog.csdn.net/shagoo/article/details/7910598

    集群部署 参照http://www.cnblogs.com/yinyi521/p/6087215.html

    然后执行:
    yum install mosquitto
    yum install mosquitto-client

    启动mosquitto服务:

    mosquitto -v

    mqtt java客户端实例:

    package com.haibran.mqtt_demo;
    
    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.persist.MemoryPersistence;
    
    public class MqttPublicSample {
    
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String topic = "sensor";
    String content = "Message from MqttPublishSample";
    int qos = 2;
    String broker = "tcp://192.168.0.20:1883";
    String clientId = "JavaSample";
    MemoryPersistence persistence = new MemoryPersistence();
    
    try {
    MqttClient sampleClient = new MqttClient(broker, clientId, persistence);
    MqttConnectOptions connOpts = new MqttConnectOptions();
    connOpts.setCleanSession(true);
    System.out.println("Connecting to broker: "+broker);
    sampleClient.connect(connOpts);
    System.out.println("Connected");
    System.out.println("Publishing message: "+content);
    MqttMessage message = new MqttMessage(content.getBytes());
    message.setQos(qos);
    sampleClient.publish(topic, message);
    System.out.println("Message published");
    sampleClient.disconnect();
    System.out.println("Disconnected");
    System.exit(0);
    } catch(MqttException me) {
    System.out.println("reason "+me.getReasonCode());
    System.out.println("msg "+me.getMessage());
    System.out.println("loc "+me.getLocalizedMessage());
    System.out.println("cause "+me.getCause());
    System.out.println("excep "+me);
    me.printStackTrace();
    }
    }
    
    }
  • 相关阅读:
    POJ1258——Prim——Agri-Net
    POJ2485——Prim——Highways
    POJ1789——Prim——Truck History
    POJ1125——Floyed——Stockbroker Grapevine
    POJ2253——Floyed——Frogger
    字符串处理 Codeforces Round #297 (Div. 2) B. Pasha and String
    模拟 Codeforces Round #297 (Div. 2) A. Vitaliy and Pie
    DP+埃氏筛法 Codeforces Round #304 (Div. 2) D. Soldier and Number Game
    queue+模拟 Codeforces Round #304 (Div. 2) C. Soldier and Cards
    贪心 Codeforces Round #304 (Div. 2) B. Soldier and Badges
  • 原文地址:https://www.cnblogs.com/wangxiaowei/p/7778218.html
Copyright © 2020-2023  润新知