MQTT简介

MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。该协议的特点有:

  • 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
  • 对负载内容屏蔽的消息传输。
  • 使用 TCP/IP 提供网络连接。
  • 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
  • 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
  • 有三种消息发布服务质量: 
    • “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
    • “至少一次”,确保消息到达,但消息重复可能会发生。
    • “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

Mosquitto是一款「An Open Source MQTT v3.1/v3.1.1 Broker」——开源的MQTT代理服务器,其下也有Windows的安装包。

但是我使用的是Win10 64位系统,这两个都下载安装后不是报错就是缺少dll文件,不能使用。

最后参考了前面博客说的,搭建了Apollo服务器,这里使用的Apollo 1.7.1。

  • 官网:http://activemq.apache.org/index.html
  • 下载地址:http://activemq.apache.org/apollo/download.html
  • 快速开始教程:http://activemq.apache.org/apollo/documentation/getting-started.html

搭建MQTT服务器

使用Apollo搭建MQTT服务器步骤:

  1. 下载Apollo服务器并解压,在CMD环境运行其工作目录下的...\bin\apollo.cmd,命令后面带上参数「create mybroker」,创建服务器实例。这里需要Java环境,系统环境变量下要有JAVA_HOME。
  2. 创建实例之后会在bin目录下生成mybroker文件夹,其中 ...\etc\apollo.xml文件下是配置服务器信息的文件,...\etc\users.properties文件包含连接MQTT服务器时用到的用户名和密码,初始默认帐号是admin,密码password;
  3. 进入...\mybroker\bin\ 目录,在CMD输入命令「apollo-broker.cmd run」,可以使用TAB键自动补全,运行后输出信息如下:

其中我们要留意的:

MQTT服务器TCP连接端口:tcp://0.0.0.0:61613

后台Web管理页面:https://127.0.0.1:61681/或http://127.0.0.1:61680/

登录服务器后,如果MQTT服务器有客户端连接,后台会显示如下

Python的MQTT客户端

在Python环境下有MQTT客户端包——paho-mqtt。

安装命令

pip install paho-mqtt

  

客户端代码清单

下面是MQTT客户端代码清单

import paho.mqtt.client as mqttdef on_connect(client, userdata, flags, rc):print("Connected with result code "+str(rc))client.subscribe("lettuce")def on_message(client, userdata, msg):print(msg.topic+" "+str(msg.payload))client = mqtt.Client()
client.username_pw_set("admin", "password") # 必须设置,否则会返回「Connected with result code 4」
client.on_connect = on_connect
client.on_message = on_messageHOST = "127.0.0.1"client.connect(HOST, 61613, 60)
client.loop_forever()

  

下面是往M

发布消息代码

QTT服务器发布消息的代码

import paho.mqtt.publish as publishHOST = "127.0.0.1"publish.single("lettuce", "payload", hostname=HOST, port=61613,auth={'username': "admin", 'password':"password"})

  

.


更新

2017年7月28日更新:

最近发现了一款比较好的开源MQTT服务器:EMQ。Linux下部署教程可以参考这篇文章:EMQ初体验——在CentOS7上部署MQTT服务器

Windows下部署可以到官网查阅相关资料。

2017年8月15日更新:

注意:后台Web管理页面被设置为只能本地访问,如果想用其他主机访问该管理页面,需要修改「http://127.0.0.1:61680/」为「http://0.0.0.0:61680/」。

相关配置文件:apache-apollo-1.7.1\bin\mybroker\etc\apollo.xml,大约61行:

<web_admin bind="http://127.0.0.1:61680"/>
<web_admin bind="https://127.0.0.1:61681"/>

转载于:https://www.cnblogs.com/saryli/p/8964145.html

转 【MQTT】在Windows下搭建MQTT服务器相关推荐

  1. MQTT在Windows下搭建MQTT服务器

    MQTT 在Windows下搭建MQTT服务器 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012163234/article/details/ ...

  2. Windows下搭建MQTT服务器

    Windows下搭建MQTT服务器 1.MQTT服务器软件筛选 2.MQTT服务器软件mosquitto下载 3.修改mosquitto配置,并启动mosquitto服务 4.利用mosquitto工 ...

  3. windows下搭建NFS服务器

    windows下搭建NFS服务器 在windows下,搭建NFS服务器最简单的方式就是下载一个NFS服务器软件,然后安装就可以了. 使用的NFS服务器软件:NFS Server 1.2.43. 下载地 ...

  4. 文件服务器 ldap,windows下搭建ldap服务器

    windows下搭建ldap服务器 内容精选 换一换 当您发现云服务器的运行速度变慢或云服务器突然出现网络断开的情况,则可能是云服务器的带宽和CPU利用率过高导致.如果您已经通过云监控服务创建过告警任 ...

  5. Redis学习笔记(一)—— 在windows下搭建redis服务器

    redis简介: redis是一个缓存数据库,里面的数据都是字符串,使用key-value形式存储,使用redis缓存数据可以提高系统的访问性能,一般开发时使用windows下的redis服务器,生产 ...

  6. 【音视频】RTMP:windows下搭建rtmp服务器(未完结...)

    0.RTMP服务器简介 0.1 Nginx-RTMP 使用Nginx和Nginx的RTMP模块(nginx-rtmp-module)搭建RTMP流媒体服务器. Nginx 是一款轻量级的 Web 服务 ...

  7. 【MQTT】在Windows下搭建MQTT服务器

    MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.该协议的特点有: 使用发布/订阅消息模式,提供 ...

  8. windows 下搭建Web服务器

    windows 下Web服务器的搭建 注:在搭建Web服务器时要有DNS与IIS的支持. 转载于:https://blog.51cto.com/babymylove/161310

  9. Windows下搭建FTP服务器

    一.什么是ftp? FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它 ...

最新文章

  1. 使用Project Lombok是否安全? [关闭]
  2. SQL语句中order_by_、group_by_、having的用法区别
  3. websocket协议
  4. MVC-RedirectToAction跳转到其他Area
  5. java开发环境jdk1.8_linux 搭建 jdk1.8 java开发环境
  6. uva 11997 K Smallest Sums 优先队列处理多路归并问题
  7. linux安装VScode
  8. Java io字符流读入英文_Java IO 系列教程(四)-字符输入流(2)
  9. 域名抢注php程序_“丁真”被抢注,蹭热点这门生意,能成就好品牌?
  10. “光棍节”变“购物节”的第12年:4982亿+2715亿!
  11. java继承的作用_Java继承概述以及Java继承案例和继承的好处
  12. 6 个步骤,搞定 AI 车牌识别器!(附详细分析)
  13. 蒙特卡罗方法 python 实现2
  14. 程序阻碍OD调试的方式2
  15. Cisco Devnet CCNA【200-901】题库稳定
  16. 测试电梯的测试用例_测试面试题之如何测试电梯
  17. 记录关于富文本编辑器出现的不能插入图片问题
  18. 乾坤符和鸿蒙符,『玩家攻略』主力兵符的不二选择!轮回符、不灭符分析
  19. leetcode 第1题【两数之和】C语言
  20. pictureselector 压缩_PictureSelector

热门文章

  1. 技校毕业是什么学历_初中毕业上技校学什么专业好
  2. android跌倒检测,Android跌倒检测
  3. Spring Boot————静态方法如何调用Spring容器中的Bean
  4. java jpeg压缩解码_JPEG图像压缩原理简介
  5. 两数的和与差的简单函数
  6. 老年人自学计算机,老年人怎样学电脑?请问从网上能找到学习资吗?
  7. 2019哈佛计算机专业录取,2019哈佛大学早申请录取数据公布 录取率再降1个点仅为13.4%...
  8. Oracle 数据怎么实时同步到 MySQL | 亲测干货分享建议收藏
  9. 基于javaweb jsp+servlet学生宿舍管理系统设计和实现
  10. python 变量类型list_Python基础变量类型——List浅析-阿里云开发者社区