转 【MQTT】在Windows下搭建MQTT服务器
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服务器步骤:
- 下载Apollo服务器并解压,在CMD环境运行其工作目录下的
...\bin\apollo.cmd,命令后面带上参数「create mybroker」,创建服务器实例。这里需要Java环境,系统环境变量下要有JAVA_HOME。 - 创建实例之后会在bin目录下生成mybroker文件夹,其中
...\etc\apollo.xml文件下是配置服务器信息的文件,...\etc\users.properties文件包含连接MQTT服务器时用到的用户名和密码,初始默认帐号是admin,密码password; - 进入
...\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 mqtt def 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_message HOST = "127.0.0.1" client.connect(HOST, 61613, 60)
client.loop_forever()
下面是往M
发布消息代码
QTT服务器发布消息的代码
import paho.mqtt.publish as publish
HOST = "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"/>
转 【MQTT】在Windows下搭建MQTT服务器的更多相关文章
- windows 下搭建git服务器,及问题处理。
最近要做一个源码管理服务器,权衡了一下还是git最适合,搭建服务器前看了网上一些windows下搭建git服务器的帖子,感觉还比较简单,没有太多需要配置的地方,于是开始动手. 我选择的是 gitfor ...
- windows下搭建nginx-rtmp服务器
windows下搭建nginx-rtmp服务器 windows下搭建nginx-rtmp服务器 准备工作 安装MinGW 安装Mercurial 安装strawberryperl 安装nasm 下载n ...
- windows 下搭建 MQTT 服务
1.首先搭建起MQTT服务 1.1安装mosquitto,mosquitto是开源的MQTT代理服务器,它的Windows安装包地址:https://mosquitto.org/download/ 1 ...
- Windows下搭建Git 服务器: BONOBO GIT SERVER + TortoiseGit
本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...
- Windows下搭建FTP服务器
一.什么是ftp? FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(A ...
- [源码管理] Windows下搭建SVN服务器
前文所述SVN客户端使用的时候,用的SVN服务器通常为外部,例如Google Code的服务器,不过,做为一个程序开发人员,就算自己一个人写程序,也应该有一个SVN版本控制系统,以便对开发代码进行有效 ...
- Windows下搭建Redis服务器
Redis服务器是当下比较流行的缓存服务器,Redis通常被人拿来和Memcached进行对比.在我看来,应当是各具优势吧,虽然应用场景基本类似,但总会根据项目的不同来进行不通的选用. 我们今天主要讲 ...
- Windows 下搭建LDAP服务器
五一闲来没事,加上项目正在进行UAT.抽空研究了一下LDAP相关知识.随手做一个记录. 为了方便阅读还是先介绍一下什么是LDAP? 前言.Lightweight Directory Access Pr ...
- 在Windows下搭建Gitlab服务器
一.GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 可通过Web界面进行访问公开的或者私人项目.它拥有与Github类 ...
随机推荐
- 牛客网 牛客练习赛7 A.骰子的游戏
A.骰⼦的游戏 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld 题目描述 在Alice和Bob面前的是两个骰 ...
- (21)C#VS快捷键
1.移动光标 ctrl+ 右键:按单词移动 home:移动到一行得开头 ,end:移动到一行得末尾 ctrl+home:移动到文本得第一行初始位置,ctrl+end文本最末尾 pageDn:往文件下面 ...
- 华农oj Problem K: 负2进制【有技巧构造/待补】
Problem K: 负2进制 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 51 Solved: 6 [Submit][Status][Web Boa ...
- intellij idea 分屏设置 与快捷键
1.找到分屏功能 File -> setting -> keymap,搜索(注意大小写): Split Vertically 水平分屏 Split Horizontally 垂直分 ...
- 链接服务器 "(null)" 的 OLE DB 访问接口 "SQLNCLI11" 指示该对象没有列,或当前用户没有访问该对象的权限。
原文:链接服务器 "(null)" 的 OLE DB 访问接口 "SQLNCLI11" 指示该对象没有列,或当前用户没有访问该对象的权限. SELECT * F ...
- 任务驱动,学习.NET开发系列第2篇------单词统计
一 高效学习编程的办法 1 任务驱动方式学习软件开发 大部分人学习软件开发技术是通过看书,看视频,听老师上课的方式.这些方式有一个共同点即按知识点进行讲解.比如拿c#编程为例,首先是讲解大量的基础概念 ...
- 使用canvas制作的移动端color picker
使用canvas制作的移动端color picker 项目演示地址(用手机或者手机模式打开) 我在另一个中demo,需要用到color picker,但是找不到我需要的移动端color picker, ...
- VS快捷键说明
转载:http://blog.csdn.net/tianzhaixing2013/article/details/51811608 Ctrl+E,D —-格式化全部代码 Ctrl+E,F —-格式化选 ...
- Java高级特性—消息队列
1)什么是jms JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API. 它便于消息系统中的Java应用程序进行消息 ...
- 用PHP上传文件时$_FILES中error返回值详解
用PHP上传文件时,我们会用程序去监听浏览器发送过来的文件信息,首先会通 过$_FILES[fieldName]['error']的不同数值来判断此欲上传的文件状态是否正常.$_FILES[field ...