若初次接触MQTT协议,可先理解以下概念:

【MQTT协议特点】——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制。
【MQTT协议角色】——在RESTful架构的物联网系统,包含两个角色客户端和服务器端,而在MQTT协议中包括【MQTT协议消息】——MQTT中的消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用。
【MQTT协议主题】——MQTT中的主题可理解为相同类型或相似类型的消息集合。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  前言转自 http://blog.csdn.net/xukai871105/article/details/39252653
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
1、获取&安装

Mosquitto提供了Windows、Linux以及qnx系统的版本,安装文件可从 http://mosquitto.org/files/binary/ 地址中获取。Windows系统下的安装过程非常简单,我们甚至可以把Mosquitto直接安装成为系统服务;但是,在实际应用中,我们更倾向于使用Linux系统的服务器,接下来我们就将重点介绍Linux版Mosquitto的安装方法。

在Linux系统上安装Mosquitto,本人建议大家使用源码安装模式,最新的源码可从 http://mosquitto.org/files/source/ 地址中获取。解压之后,我们可以在源码目录里面找到主要的配置文件config.mk,其中包含了所有Mosquitto的安装选项,详细的参数说明如下:

# 是否支持tcpd/libwrap功能.
#WITH_WRAP:=yes # 是否开启SSL/TLS支持
#WITH_TLS:=yes # 是否开启TLS/PSK支持
#WITH_TLS_PSK:=yes # Comment out to disable client client threading support.
#WITH_THREADING:=yes # 是否使用严格的协议版本(老版本兼容会有点问题)
#WITH_STRICT_PROTOCOL:=yes # 是否开启桥接模式
#WITH_BRIDGE:=yes # 是否开启持久化功能
#WITH_PERSISTENCE:=yes # 是否监控运行状态
#WITH_MEMORY_TRACKING:=yes

这里需要注意的是,默认情况下Mosquitto的安装需要OpenSSL的支持;如果不需要SSL,则需要关闭config.mk里面的某些与SSL功能有关的选项(WITH_TLS、WITH_TLS_PSK)。接着,就是运行make install进行安装,完成之后会在系统命令行里发现mosquitto、mosquitto_passwd、mosquitto_pub和mosquitto_sub四个工具(截图如下),分别用于启动代理、管理密码、发布消息和订阅消息。

2、配置&运行

安装完成之后,所有配置文件会被放置于/etc/mosquitto/目录下,其中最重要的就是Mosquitto的配置文件,即mosquitto.conf,以下是详细的配置参数说明。

# =================================================================
# General configuration
# ================================================================= # 客户端心跳的间隔时间
#retry_interval 20 # 系统状态的刷新时间
#sys_interval 10 # 系统资源的回收时间,0表示尽快处理
#store_clean_interval 10 # 服务进程的PID
#pid_file /var/run/mosquitto.pid # 服务进程的系统用户
#user mosquitto # 客户端心跳消息的最大并发数
#max_inflight_messages 10 # 客户端心跳消息缓存队列
#max_queued_messages 100 # 用于设置客户端长连接的过期时间,默认永不过期
#persistent_client_expiration # =================================================================
# Default listener
# ================================================================= # 服务绑定的IP地址
#bind_address # 服务绑定的端口号
#port 1883 # 允许的最大连接数,-1表示没有限制
#max_connections -1 # cafile:CA证书文件
# capath:CA证书目录
# certfile:PEM证书文件
# keyfile:PEM密钥文件
#cafile
#capath
#certfile
#keyfile # 必须提供证书以保证数据安全性
#require_certificate false # 若require_certificate值为true,use_identity_as_username也必须为true
#use_identity_as_username false # 启用PSK(Pre-shared-key)支持
#psk_hint # SSL/TSL加密算法,可以使用“openssl ciphers”命令获取
# as the output of that command.
#ciphers # =================================================================
# Persistence
# ================================================================= # 消息自动保存的间隔时间
#autosave_interval 1800 # 消息自动保存功能的开关
#autosave_on_changes false # 持久化功能的开关
persistence true # 持久化DB文件
#persistence_file mosquitto.db # 持久化DB文件目录
#persistence_location /var/lib/mosquitto/ # =================================================================
# Logging
# ================================================================= # 4种日志模式:stdout、stderr、syslog、topic
# none 则表示不记日志,此配置可以提升些许性能
log_dest none # 选择日志的级别(可设置多项)
#log_type error
#log_type warning
#log_type notice
#log_type information # 是否记录客户端连接信息
#connection_messages true # 是否记录日志时间
#log_timestamp true # =================================================================
# Security
# ================================================================= # 客户端ID的前缀限制,可用于保证安全性
#clientid_prefixes # 允许匿名用户
#allow_anonymous true # 用户/密码文件,默认格式:username:password
#password_file # PSK格式密码文件,默认格式:identity:key
#psk_file # pattern write sensor/%u/data
# ACL权限配置,常用语法如下:
# 用户限制:user <username>
# 话题限制:topic [read|write] <topic>
# 正则限制:pattern write sensor/%u/data
#acl_file # =================================================================
# Bridges
# ================================================================= # 允许服务之间使用“桥接”模式(可用于分布式部署)
#connection <name>
#address <host>[:<port>]
#topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix] # 设置桥接的客户端ID
#clientid # 桥接断开时,是否清除远程服务器中的消息
#cleansession false # 是否发布桥接的状态信息
#notifications true # 设置桥接模式下,消息将会发布到的话题地址
# $SYS/broker/connection/<clientid>/state
#notification_topic # 设置桥接的keepalive数值
#keepalive_interval 60 # 桥接模式,目前有三种:automatic、lazy、once
#start_type automatic # 桥接模式automatic的超时时间
#restart_timeout 30 # 桥接模式lazy的超时时间
#idle_timeout 60 # 桥接客户端的用户名
#username # 桥接客户端的密码
#password # bridge_cafile:桥接客户端的CA证书文件
# bridge_capath:桥接客户端的CA证书目录
# bridge_certfile:桥接客户端的PEM证书文件
# bridge_keyfile:桥接客户端的PEM密钥文件
#bridge_cafile
#bridge_capath
#bridge_certfile
#bridge_keyfile # 自己的配置可以放到以下目录中
include_dir /etc/mosquitto/conf.d

最后,启动Mosquitto服务很简单,直接运行命令行“ mosquitto -c /etc/mosquitto/mosquitto.conf -d ”即可开启服务。接下来,就让我们尽情体验Mosquitto的强大功能吧!当然,有了Mosquitto,我们就可以安心地抛弃“简陋”的rsmb了,有兴趣的话,大家还可以尝试把Mosquitto服务运用到上一篇的Android推送服务中。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

正文部分转自http://topmanopensource.iteye.com/blog/1703814

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

偷来的东西 …

MQTT协议学习研究 & Mosquitto简要教程(安装和使用)的更多相关文章

  1. MQTT的学习之Mosquitto发布-订阅(2)

    在<MQTT的学习之Mosquitto安装&使用(1)>一文末尾,我已经模拟了发布-订阅模式,只是那时在服务器直接模拟的,并不是java代码模拟的.下面贴出Java代码 1.首先引 ...

  2. MQTT 协议学习: 总结 与 各种定义的速查表

    背景 经过几天的学习与实操,对于MQTT(主要针对 v3.1.1版本)的学习告一段落,为了方便日后的查阅 本文链接:<MQTT 协议学习: 总结 与 各种定义的速查表> 章节整理 MQTT ...

  3. MQTT 协议学习:004-MQTT建立通信与 CONNECT 、CONNACK 报文

    背景 上一讲 MQTT 协议学习:通信报文的构成介绍了在MQTT通信中,各报文的通信流程:从本讲开始,我们开始介绍实际中使用的报文,以及它们的组成. CONNECT - 连接请求 报文 客户端到服务端 ...

  4. MQTT的学习研究(十七)Mosquitto简要教程(安装&使用)

    Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案.本文的主旨在于记录M ...

  5. MQTT的学习之Mosquitto安装&使用(1)

    Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案.本文的主旨在于记录M ...

  6. MQTT的学习之Mosquitto安装和使用

    Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案.本文的主旨在于记录M ...

  7. MQTT协议学习及实践(Linux服务端,Android客户端的例子)

    前言 MQTT(Message Queuing Telemetry Transport),是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提 ...

  8. 【转载】MQTT的学习之Mosquitto集群搭建

    本文出自:http://www.cnblogs.com/yinyi521/p/6087215.html 文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 ...

  9. MQTT 协议学习:001-搭建MQTT通信环境,并抓包测试

    背景 目的:了解MQTT 通信的有关概念与流程:方便推算某些数据与文档描述是否一致. 为了能够在保证学习质量的前提下,降低配置环境的门槛,我们将服务器搭建在windwos中,实行内网间的MQTT协议访 ...

随机推荐

  1. 题目1002:Grading(题目背景基于高考打分的简单判断)

    题目链接:http://ac.jobdu.com/problem.php?pid=1002 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  2. ELK系列一:ELK的安装

    一.Elasticsearch.Kibana.Logstash.Elasticsearch-head的安装 ELK的安装 安装下载地址: https://www.elastic.co/cn/downl ...

  3. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验八:PS/2模块② — 键盘与组合键

    实验八:PS/2模块② — 键盘与组合键 实验七之际,我们学习如何读取PS/2键盘发送过来的通码与断码,不过实验内容也是一键按下然后释放,简单按键行为而已.然而,实验八的实验内容却是学习组合键的按键行 ...

  4. ms转成00:00:00的时间格式化

    毫秒转成 00:00:00的时间格式 比如1000毫秒转成00:00:01 /** * 格式化邀请的时间 * @param time ms */ public static formatTime(ti ...

  5. 【咸鱼教程】TextureMerger1.6.6 二:Sprite Sheet的制作和使用

    Sprite Sheet主要用于将零碎的小图合并成一张整图.减少加载图片时http的请求次数. 1 打开TextureMerger,选择Sprite Sheet 2  添加纹理(未创建项目时,会先弹出 ...

  6. spring jdbcTemplate 操作存储过程

    Spring的SimpleJdbcTemplate将存储过程的调用进行了良好的封装,下面列出使用JdbcTemplate调用Oracle存储过程的三种情况: 一.无返回值的存储过程调用 1.存储过程代 ...

  7. python模块路径

    Python会在以下路径中搜索它想要寻找的模块: 1. 程序所在的文件夹 2. 标准库的安装路径 3. 操作系统环境变量PYTHONPATH所包含的路径 将自定义库的路径添加到Python的库路径中去 ...

  8. eclipse 中 大小写切换:ctrl+shift+x 转为大写 ctrl+shift+y 转为小写

    ...............

  9. ASP.NET IIS System.UnauthorizedAccessException: 对路径“C:\......xls”的访问被拒绝。

    问题: System.UnauthorizedAccessException: 对路径“C:\.....xls”的访问被拒绝. 背景: 项目中用到Excel导出功能,用的是Excel模板的方式来做,意 ...

  10. camke中关于变量的一些知识

    一.cmake变量引用的方式: 在cmake中,使用${}进行变量的引用.在IF等语句中,是直接使用变量名而不是通过${}取值 二.cmake自定义变量的方式: 主要有隐式定义和显式定义两种,前面举了 ...