WebSphere MQ 遥测传输 (MQTT) 是轻量级基于代理的发布 / 订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:
网络代价昂贵,带宽低、不可靠。
在嵌入设备中运行,处理器和内存资源有限。
该协议的特点有:
使用发布 / 订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
对负载内容屏蔽的消息传输。
使用 TCP/IP 提供网络连接。
有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
IBM 通过对现有移动推送平台比较之后,对其中存在的问题和缺陷做了很好的分析。这些问题集中体现在如下方面:
在网络方面如何适应现有网络的不可靠,很好的保障数据发送可靠性
如何降低网络流量,从而节省网络成本
在移动设备方面如何降低对设备能力的要求,特别是适应计算和存储弱的设备
如何降低对设备电量的消耗,满足设备电源能力的不足
如何降低平台依赖性,真正实现跨移动设备平台
在数据方面缺少对数据安全性的保障,特别是对服务器的掌控
缺少对大量数据的监测,优化
IBM 针对上面问题,结合 MQTT 和 WebSocket,提出了更智慧的移动推送服务解决方案。
图 1. IBM 移动推送服务解决方案
mosca是一个轻量级的mqtt broker(NodeJS中间件), 安装和使用都很简单:
npm install mqtt -gd
npm install mosca -gd
mosca -v &
mosca启动后, 就可以使用mqtt client发布和订阅消息了:
NodeJS client:
发布消息:
var mqttClient = require(‘mqtt’);
var client = mqttClient.createClient(1883, ’127.0.0.26′); //host与端口
client.publish(‘test/public/topic0′, ‘public topic 0 start’);
client.publish(‘test/private/topic1′, ‘private topic 1 start’);
client.publish(‘test/private/topic2′, ‘private topic 2 start’);
订阅消息:
var mqttClient = require(‘mqtt’);
var client = mqttClient.createClient(1883, ’127.0.0.26′);
//client.subscribe(‘fuck/*’);
client.subscribe(‘test/*’);
client.on(‘message’, function(topic, message){
console.log(topic, message);
});
Java Mqtt client的例子:
package com.snda.apps.odin.talk.client;
import com.ibm.mqtt.MqttClient;
import com.ibm.mqtt.MqttException;
import com.ibm.mqtt.MqttSimpleCallback;
public class MqttClienter {
private final static String CONNECTION_STRING = “tcp://127.0.0.26:1883″;
private final static boolean CLEAN_START = true;
private final static short KEEP_ALIVE = 30;// 低耗网络,但是又需要及时获取数据,心跳30s
private final static String CLIENT_ID = “client1″;
private final static String PUBLISH_TOPICS = “test/public/topic0″;
private final static String[] TOPICS = {“test/private/topic1″, “test/private/topic2″};
private final static int[] QOS_VALUES = { 0, 2 };
private MqttClient mqttClient = null;
public MqttClienter(String i) {
try {
mqttClient = new MqttClient(CONNECTION_STRING);
SimpleCallbackHandler simpleCallbackHandler = new SimpleCallbackHandler();
mqttClient.registerSimpleHandler(simpleCallbackHandler);// 注册接收消息方法
mqttClient.connect(CLIENT_ID + i, CLEAN_START, KEEP_ALIVE);
mqttClient.subscribe(TOPICS, QOS_VALUES);// 订阅接主题
/**
* 完成订阅后,可以增加心跳,保持网络通畅,也可以发布自己的消息
*/
mqttClient.publish(PUBLISH_TOPICS, “Java客户端测试消息Hello World!”.getBytes(), QOS_VALUES[0], true);
} catch (MqttException e) {
e.printStackTrace();
}
}
// 简单回调函数,处理client接收到的主题消息
class SimpleCallbackHandler implements MqttSimpleCallback {
/**
* 当客户机和broker意外断开时触发 可以再此处理重新订阅
*/
public void connectionLost() throws Exception {
System.out.println(“客户机和broker已经断开”);
}
/**
* 客户端订阅消息后,该方法负责回调接收处理消息
*/
public void publishArrived(String topicName, byte[] payload, int Qos,
boolean retained) throws Exception {
System.out.println(“订阅主题: ” + topicName);
System.out.println(“消息数据: ” + new String(payload));
System.out.println(“消息级别(0,1,2): ” + Qos);
System.out.println(“是否是实时发送的消息(false=实时,true=服务器上保留的最后消息): ” + retained);
}
}
public static void main(String[] args) {
new MqttClienter(“” + 1);
}
}
此协议可以用于移动APP的消息发布,即时通讯等应用
- 大小: 58.8 KB
分享到:
相关推荐
MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布/订阅模式的网络通信协议,主要用于物联网(IoT)领域,它设计的目标是低带宽、高延迟、不可靠的网络环境。MQTT协议因其高效、简单、可靠的特性,...
2. **MQTT通信协议**:MQTT是IBM开发的一种面向物联网的轻量级通信协议。它的设计理念是低带宽、低功耗和高可靠性。MQTT使用发布/订阅模型,其中设备作为发布者发送消息,服务器作为代理处理这些消息,并将它们分发...
本主题聚焦于如何利用4G网络通过MQTT(Message Queuing Telemetry Transport)协议与ONENET平台进行通信。MQTT是一种轻量级的发布/订阅消息协议,特别适合于资源有限的设备和低带宽高延迟的网络环境。而ONENET是一个...
总结来说,MQTT协议是一种专为嵌入式设备和低带宽网络设计的轻量级消息协议,通过其在物联网和移动通信领域的应用,证明了其可靠性和高效性。 MQTT协议提供了灵活的质量服务等级,能够满足不同的消息传递需求,并...
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅式消息传输协议,常用于物联网(IoT)设备间的数据通信。它设计的目标是高效、低带宽、使用有限的网络连接和低功耗设备。MQTT协议在传感器、移动...
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,设计思想是开放、简单、小体积、低功耗,并且适合于网络条件不稳定或带宽有限的环境,尤其适用于物联网(IoT)设备之间的通信。MQTT...
MQTT 协议 5.0 中文版 MQTT 协议是一种轻量级的、基于发布/订阅模式的消息传输协议,设计思想是轻巧、开放、简单、规范,因此易于实现。MQTT 协议 5.0 是 OASIS Message Queuing Telemetry Transport (MQTT) TC ...
基于MQTT通信协议的无线人体健康实时监测系统软硬件资料(以STM32单片机为控制核心,通过多种类型传感器采集人体的心率、血氧、体温数据,并利用MQTT通信协议实现无线).zip 基于MQTT通信协议的无线人体健康实时监测...
总结,MQTT标准协议是物联网通信的重要工具,其轻量级的设计使得它非常适合资源有限的设备。理解和掌握MQTT的工作原理和特性,对于构建高效、可靠的IoT系统至关重要。通过阅读《MQTT标准协议.pdf》这份文档,可以...
MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性: 1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合; 2、对...
MQTT(Message Queuing Telemetry Transport)通信协议是一种轻量级的发布/订阅模式的网络协议,主要用于物联网(IoT)领域。它设计的目标是高效、可靠、低带宽的网络环境,尤其适合于低功耗设备和不稳定网络连接的...
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种广泛应用于物联网(IoT)领域的轻量级发布/订阅式网络通信协议。它的设计目标是为资源有限的设备提供高效可靠的数据传输,特别是在低带宽、高...
Python使用MQTT通信协议与ESP8266通信控制流水灯和小车+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ Python使用MQTT通信协议与ESP8266通信控制流水灯和...
在STM32F0上实现MQTT通讯,首先要理解MQTT协议的基本原理。MQTT协议基于TCP/IP,设计时考虑了低带宽、高延迟和不可靠网络环境,因此特别适合嵌入式设备。它主要有三个核心概念:发布者(Publisher)、订阅者...
配合客户端库(如Paho MQTT或EMQX SDKs)和示例代码,用户可以创建发布者和订阅者实例,进行实际的MQTT通信测试,进一步熟悉协议的操作和交互。 此外,学习MQTT协议不仅限于理论知识,还需要动手实践。例如,可以...
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,主要用于物联网(IoT)设备之间的通信。MQTT5.0是该协议的最新版本,旨在提高效率,增强安全性,并提供更多的功能特性。以下是关于MQTT...
mqtt通信协议.zip
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,主要用于物联网(IoT)设备之间的通信,特别是在低带宽、高延迟或不可靠的网络环境中。MQTT V3.1.1是其最新稳定版本,这个压缩包提供了...
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的发布/订阅(Publish/Subscribe)消息协议,广泛应用于物联网(IoT)领域,为设备与服务器之间的通信提供了高效、低带宽的解决方案。...
MQTT(Message Queuing Telemetry Transport)是一个轻量级的消息传输协议,专为受限环境而设计,如物联网(IoT)和机器对机器(M2M)通信。该协议广泛应用于需要低带宽、不稳定网络或小代码空间的场景中。MQTT协议...