物联网消息队列协议MQTT

时间:2022-01-10 15:22:54

简介
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-)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-6/
gpgcheck=
gpgkey=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-6//repodata/repomd.xml.key
enabled=

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();
}
} }