转 【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的安装包。

Mosquitto

但是我使用的是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服务运行信息

其中我们要留意的:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一次StackOverflowError问题

StackOverflowError Idea启动一直抛出StackOverflowError栈溢出&#xff0c;大概率是跟刚写的代码相关 public class WebServiceConfig {private static WebServiceConfig cfg new WebServiceConfig();// Web服务的URLprivate String address;// Web服务接口private Class s…

DNS A记录和CNAME记录

参考文章&#xff1a;http://blog.xieyc.com/differences-between-a-record-and-cname-record/ A (Address) 记录是用来指定主机名&#xff08;或域名&#xff09;对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。…

远程调用,限制请求超时时间处理

HttpClient处理 HttpClient httpClientpost new DefaultHttpClient(); String Posturl"xxx"; HttpPost httpPost new HttpPost(Posturl); RequestConfig ReqConfig RequestConfig.custom().setConnectTimeout(1000) //连接超时时间.setConnectionRequestTimeout…

HttpSession 和 HttpSession

说cookie机制采用的是在客户端保持状态的方案&#xff0c;而session机制采用的是在服务器端保持状态的方案。转载于:https://www.cnblogs.com/YangBinChina/p/8970673.html

flask 坑

no python application found, check your startup logs for errors 日志里面报类似于“Mon Mar 23 10:26:49 2015 – — no python application found, check your startup logs for errors —”这类错误时&#xff0c;需要好好检查一下xml文件 这个文件里面行尾不能有空格&am…

js数组sort排序原理

大家都知道javascript的数组有sort排序方法,可以实现升序与降序&#xff0c;现在我们来学习一下sort方法排序的原理冒泡排序。冒泡排序:拿数组的当前项和后一项比较&#xff0c;如果当前项大于后一项&#xff0c;两者交换位置。 1 let arr [100, 34, 16, 3, 18, 70];2 3 for …

多数据源处理-苞米豆-dynamic

微服务项目虽然每个服务可以单独使用一个库&#xff0c;但是某些特定服务&#xff0c;如调度中心服务&#xff0c;定时任务等&#xff0c;如果还是使用rpc或者fegin频繁进行远程调用&#xff0c;总感觉不是很合适 所以对单服务进行了多数据源处理 使用的是苞米豆的 dynamic-d…

springboot版本升级导致webservice调用失败org.apache.cxf.common.jaxb.JAXBUtils.createMininumEscapeHandle

很感谢这位作者的文章https://blog.csdn.net/q340505050518/article/details/105394315 近期对项目版本进行升级 原项目版本 从 Springcloud alibaba 2.1.0 Spring cloud Greenwich SpringBoot 2.1.3版本升级&#xff0c; 一开始升级的版本是&#xff1a; Springclo…

servlet中servletContext的五大作用(一)

获取web的上下文路径获取全局的参数作为域对象使用请求转发读取web项目的资源文件package day10.about_servletcontext.get_path; /*** 首先区别&#xff1a;* 一个网站只有一个ServletContext对象* 而每一个Servlet都有一个ServletConfig对象* * 但是我们拿Context对象的话&am…

记录一下alibaba cloud boot 版本对应关系

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

hihocoder 1580 Matrix(北京icpc2017网络赛)

#1580 : Matrix时间限制:1000ms单点时限:1000ms内存限制:256MB描述Once upon a time, there was a little dog YK. One day, he went to an antique shop and was impressed by a beautiful picture. YK loved it very much.However, YK did not have money to buy it. He begg…

sentinel控制台无数据解决

本地开发sentinel控制台有数据显示&#xff0c; 部署至linux服务器后&#xff0c;无数据显示 可能出现的原因有如下可能&#xff1a; 1.linux系统时间 和 控制台所在的系统时间不一致导致 date看一下&#xff0c;解决系统时间问题 2.是端口防火墙问题 生产环境对防火墙端口…

Nacos版本升级1.1.3 >> 1.3.1 —>再升级至1.3.2

前段时间进行了版本升级&#xff0c;springboot &#xff0c;springcloud &#xff0c;spring cloud alibaba都进行了版本调整 当时nacos并未进行调整&#xff0c; 再测试项目运行过程中&#xff0c;nacos版本不匹配&#xff0c;导致抛出很多nacos的请求异常 并且nacos的1.1…

[BZOJ 5072]小A的树

Description 题库链接 给你 \(n\) 个节点的一棵树&#xff0c;点分黑白。 \(q\) 组询问&#xff0c;每次询问类似于“是否存在树中 \(x\) 个点的连通块恰有 \(y\) 个黑点”。 \(t\) 组数据。 \(1\leq t\leq 5,1\leq n\leq 5000,q\leq 10^5\) Solution 由于询问比较多&#xff0…

Druid的外网访问异常

本地启动访问无异常&#xff0c;部署至Linux服务器后无法访问 #合并多个DruidDataSource的监控数据use-global-data-source-stat: truestat-view-servlet:login-username: adminlogin-password: adminreset-enable: falseurl-pattern: /druid/*# 添加IP白名单allow: "&quo…

POI Excel解析

Maven 引入POI <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.13</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-…

Linux项目第一次访问非常慢,后来很快的异常

最近项目本地访问和测试服务器访问都没出现访问很慢的问题。 近期要上生产部署&#xff0c;所以对生产环境的组件及各服务进行了部署&#xff0c;部署完成后进行测试发现请求耗时异常 比如一个订单查询请求&#xff0c;第一次请求耗时5m 或者15s 而且很有规律&#xff0c;不多…

mysql order by按照汉字拼音进行排序

Mysql的处理办法是&#xff1a; SELECT * FROM user_info ORDER BY CONVERT(user_name USING GBK) ASC;

spring注解大全

【转载】https://www.cnblogs.com/zxf330301/articles/6559210.html spring component的作用 1、controller 控制器&#xff08;注入服务&#xff09; 2、service 服务&#xff08;注入dao&#xff09; 3、repository dao&#xff08;实现dao访问&#xff09; 4、component &am…