mqtt协议

mqtt协议-broker之moqutte源码研究六之集群

旧街凉风 提交于 2020-03-07 02:10:36
moquette的集群功能是通过Hazelcast来实现的,对Hazelcast不了解的同学可以自行Google以下。 在讲解moquette的集群功能之前需要讲解一下moquette的拦截器,因为moquette对Hazelcast的集成本身就是通过拦截器来实现的。 一。拦截器 io.moquette.spi.impl.ProtocolProcessor类里面有一个BrokerInterceptor类,这个类就是broker拦截器,这个对象,在processConnect,processPubAck,processPubComp,processDisconnect,processConnectionLost,processUnsubscribe,processSubscribe,processPublish等八个地方都用到了,说明在broker处理各个报文的关键期间都会用到,我们先看一这个类的结构 private static final Logger LOG = LoggerFactory.getLogger(BrokerInterceptor.class); private final Map<Class<?>, List<InterceptHandler>> handlers; private final ExecutorService executor; private

mqtt协议-broker之moqutte源码研究三之SUBSCRIBE报文处理

感情迁移 提交于 2020-03-07 02:10:03
这一篇开始讲解moqutte对SUBSCRIBE报文的处理 代码不复杂 public void processSubscribe(Channel channel, MqttSubscribeMessage msg) { String clientID = NettyUtils.clientID(channel);//从channel里面获取clientId,具体原理看下文 int messageID = messageId(msg); LOG.info("Processing SUBSCRIBE message. CId={}, messageId={}", clientID, messageID); RunningSubscription executionKey = new RunningSubscription(clientID, messageID); SubscriptionState currentStatus = subscriptionInCourse.putIfAbsent(executionKey, SubscriptionState.VERIFIED); if (currentStatus != null) { LOG.warn("Client sent another SUBSCRIBE message while this one was being

MQTT协议使用mosquitto服务器在windows下使用libmosquitto订阅发布,简单小例子

自作多情 提交于 2020-02-28 06:17:31
1.去官网下载mosquitto (我使用Binary Installation--windows--mosquitto-1.4.14-install-win32.exe):      下载地址:https://mosquitto.org/download/ 2.双击安装。 3.使用:   进入mosquitto安装目录,双击“mosquitto.exe”开启服务。   如果出现缺少 .dll 文件,去www.zhaodll.com下载相应的dll文件。   ps:(我在打开mosquitto_sub.exe、mosquitto_pub.exe时缺少pthreadVC2.dll。下载之后放到mosquitto安装目录下即可。)      进入安装目录,双击双击“mosquitto.exe”即可,因为上面已经设置了手动启动mosquitto服务,所以该窗口不要关闭,测试过程重要一直启动该服务   对于订阅:   win+R键,输入cmd,即打开命令行,进入mosquitto目录,输入:mosquitto_sub -v -t MqttTest   -v表示打印更多调试信息,-t表示指定主题,MqttTest即为主题名   对于发布:   win+R键,输入cmd,即打开命令行,进入mosquitto目录,输入: mosquitto_pub -t MqttTest -m

Mqtt服务器搭建

白昼怎懂夜的黑 提交于 2020-02-28 06:12:50
/*--> */ /*--> */ Mqtt服务器搭建 测试环境:CentOS64位 1.安装基础软件 yum install gcc-c++ yum install cmake yum install openssl-devel //mosquitto默认支持openssl 2.下载源码包 wget http://mosquitto.org/files/source/mosquitto-1.4.4.tar.gz wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz --no-check-certificate wget https://github.com/warmcat/libwebsockets/archive/v1.3-chrome37-firefox30.tar.gz 3.解压源码包 tar xf c-ares-1.10.0.tar.gz && mv c-ares-1.10.0 /usr/local/src/ tar xf v1.3-chrome37-firefox30 -C /usr/local/src/ tar xf mosquitto-1.4.4.tar.gz -C /usr/local/src/ 4.编译准备 cd /usr/local/src/mosquitto-1.4.4/ vim compiling

EMQ X 插件持久化系列 (五)MySQL MQTT 数据存储

微笑、不失礼 提交于 2020-01-16 06:43:38
本文以在 CentOS 7.2 中的实际例子来说明如何通过 MySQL 来存储相关的 MQTT 数据。 MySQL 属于传统的关系型数据库产品,其开放式的架构使得用户的选择性很强,而且随着技术的逐渐成熟,MySQL 支持的功能也越来越多,性能也在不断地提高,对平台的支持也在增多,此外,社区的开发与维护人数也很多。当下,MySQL 因为其功能稳定、性能卓越,且在遵守 GPL 协议的前提下,可以免费使用与修改,因此深受用户喜爱。 安装与验证 MySQL 服务器 读者可以参考 MySQL 官方文档 或使用 Docker 来下载安装 MySQL 服务器,本文章使用 MySQL 5.6 版本。 为方便管理操作,可下载使用官方免费图形化管理软件 MySQL Workbeanch 。 如果读者使用的是 MySQL 8.0 及以上版本,MySQL 需按照 EMQ X 无法连接 MySQL 8.0 教程特殊配置。 准备 初始化数据表 插件运行依赖以下几张数据表,数据表需要用户自行创建,表结构不可改动。 mqtt_client 存储设备在线状态 DROP TABLE IF EXISTS ` mqtt_client ` ; CREATE TABLE ` mqtt_client ` ( ` id ` int ( 11 ) unsigned NOT NULL AUTO_INCREMENT , `

EMQ X 插件持久化系列 (四)PostgreSQL 数据持久化

十年热恋 提交于 2019-12-27 14:32:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本章节以在 CentOS 7.2 中的实际例子来说明如何通过 PostgreSQL 来存储相关的信息。 作为开源关系数据库重要一员,PostgreSQL 标榜自己是世界上最先进的开源数据库,相比于其他开源关系数据库如 MySQL,PostgreSQL 是完全由社区驱动的开源项目,由全世界超过 1000 名贡献者所维护。PostgreSQL 提供了单个完整功能的版本,而不像 MySQL 那样提供了多个不同的社区版、商业版与企业版。PostgreSQL 基于自由的 BSD/MIT 许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。 PostgreSQL 具有诸多特性,在 GIS 领域有较多支持,其“无锁定”特性非常突出,支持函数和条件索引,有成熟的集群方案。PostgreSQL 还具备及其强悍的 SQL 编程能力如统计函数和统计语法支持,通过 Timescaledb 插件,PostgreSQL 可以转变为功能完备的时序数据库 Timescaledb 。 功能概览 客户端在线状态存储 客户端代理订阅 持久化发布消息 Retain 消息持久化 消息确认持久化 自定义 SQL 安装与验证 PostgreSQL 服务器 读者可以参考 PostgreSQL 官方文档 或 Docker

MQTT协议学习笔记(八)

跟風遠走 提交于 2019-12-21 09:39:02
目录 MQTT协议学习笔记(八) UNSUBSCRIBE报文解析 UNSUBSCRIBE固定报头 UNSUBSCRIBE固定报头 UNSUBSCRIBE有效荷载 MQTT协议学习笔记(八) UNSUBSCRIBE报文解析 UNSUBSCRIBE固定报头 UNSUBSCRIBE固定报头的格式与SUBSCRIBE报文保持一致 UNSUBSCRIBE固定报头 UNSUBSCRIBE可变报头的格式与SUBSCRIBE可变报头保持一致 UNSUBSCRIBE有效荷载 UNSUBSCRIBE有效荷载的格式与SUBSCRIBE有效荷载基本一致(区别:不包含最后的消息质量字节) 来源: CSDN 作者: m0_37552138 链接: https://blog.csdn.net/m0_37552138/article/details/103639299

物联网主流通信协议解读 | 我的物联网成长记

你离开我真会死。 提交于 2019-12-05 20:13:26
【摘要】 当今物联网的主流通信协议是CoAP/LWM2M协议和MQTT协议,本文将会为您分别解读这些协议的工作方式,了解它们的特点,助您选择最适合您的设备的通信协议。 通信协议又称为传输协议,用于定义多个设备之间传播信息时的系统标准。通信协议定义了设备通信中的语法、语义、同步规则和发生错误时的处理原则,可以理解为机器之间使用的语言。 在物联网场景中,通信主要发生在设备和物联网平台之间,由于大部分物联网设备都是资源受限型设备,它们的物理资源和网络资源都非常有限,直接使用现有的HTTP协议进行通信对它们来说要求实在是太高了。因此,物联网场景中主要使用的通信协议都是轻量级的,为资源受限环境而设计的通信协议,例如CoAP/LWM2M协议和MQTT协议。 本文将会为您分别解读CoAP/LWM2M协议和MQTT协议,希望能帮助您了解这些协议,并选择最适合您的设备的通信协议。 ----------CoAP/LWM2M协议---------- CoAP(Constrained Application Protocol,受限制的应用协议)运行于UDP协议之上,设计上主要借鉴了HTTP协议的RESTful风格,简化了协议包格式,一个最小的CoAP数据包仅4字节。CoAP协议采用了和HTTP协议相同的请求/响应模型,客户端发出请求后,服务端处理请求并回复响应,是一种点对点的通信模型