MQTT协议学习:2、MQTT中间件搭建及现成MQTT中间件服务

2023-10-29

MQTT协议学习:2、MQTT中间件搭建及现成MQTT中间件服务


1. MQTT协议再解读

当我们对MQTT协议有概念性的了解后,我们知道要进行MQTT协议的使用,我们需要搭建MQTT中间件作为MQTT客户端发布/订阅消息的中间处理服务,可以简单理解为一个媒介,客户端可以发布topic消息到中间件,也可以从中间件订阅需要的topic消息,这样子对于单片机等客户端设备就可以将传感器数据发送到中间件,然后手机、展示平台等客户端就可以从中间件订阅需要的数据,中间件根据订阅的需求将收到的发布消息转给需要数据的客户端。如果还理解不了的话,这样这样思考:中间件就像房产中介,发布消息的客户端就相当于卖房的,订阅消息的客户端就相当于有买房需求的,中间件拿到发布者发布的消息提供给有获取该信息的需求的订阅者就相当于房产中介拿到卖房者的房产信息提供给有买房需求的客户。

2. RabbitMQ

我们这里在本地搭建RabbitMQ作为MQTT中间件来进行测试:https://github.com/rabbitmq/rabbitmq-server

实际上还有很多MQTT中间件,我们在最开始学习MQTT协议时有过说明,RabbitMQ目前使用的比较广泛,资料等都比较全面,所以以此为例。

(1). 简介

RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。

RabbitMQ服务支持下列操作系统:

Linux
Windows, NT 到 10
Windows Server 2003 到 2016
macOS
Solaris
FreeBSD
TRU64
VxWorks

RabbitMQ支持下列编程语言:

Python
Java
Ruby
PHP
C#
JavaScript
Go
Elixir
Objective-C
Swift

(2). 安装

官网安装相关文档,可以通过编译源码方式也可以通过系统包安装:

https://rabbitmq.com/download.html

Debian系列安装说明:

https://rabbitmq.com/install-debian.html

Ubuntu16.04快速安装及启动RabbitMQ及MQTT-server:

//1. 安装erlang
sudo apt-get install erlang
//2. 安装RabbitMQ
sudo apt-get install rabbitmq-server
//3. 启动/停止/重启服务
service rabbitmq-server start
service rabbitmq-server stop
service rabbitmq-server restart
//4. 启动mqtt服务
sudo rabbitmq-plugins enable rabbitmq_mqtt

(3). 使用

和一般的数据库安装操作类似,安装后需要设置用户名密码等等用于后续远程连接控制。(这里设置用户名admin,用户密码:admin*1993,权限和读写都全开)

//1. 启动web控制台
sudo rabbitmq-plugins enable rabbitmq_management
//2. 添加用户密码(默认的guest/gueset记得删掉)
sudo rabbitmqctl add_user admin admin*1993
//3. 添加权限
sudo rabbitmqctl set_user_tags admin administrator
//4. 添加读写权限
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

访问ip:15672可进入web控制台:

在这里插入图片描述

此外,RabbitMQ介绍了一些客户端库和开发人员工具,我们可以在这里结合示例学习:https://rabbitmq.com/devtools.html

当我们上面安装好RabbitMQ-server并启动后我们可以根据上面的客户端示例进行开发测试,如果不知道如何开发对应的客户端的话可以看这里:
https://rabbitmq.com/getstarted.html

对应的MQTT的客户端关于多种语言的客户端示例都有:

在这里插入图片描述

如果还是不太明白的话也没有关系(这里给的实例确实不太方便),我们在接触MQTT中间件以及相关成熟服务后,下一篇我会对MQTT客户端做实例总结。

3. 物联网平台

在不需要或没有条件搭建和维护MQTT中间件但我们又有物联网设备需要进行接入网络提供网络服务使用的话,我们可以使用一些现成的物联网平台,国外的谷歌、亚马逊、思科等以及国内的阿里、百度、腾讯、华为等都有现成的物联网平台,一般都会提供基于MQTT协议的接入方式,根据平台提供的帮助文档,我们只需要在设备上开发MQTT客户端进行协议接入即可,这里就不展开了,只需要搜索对应的物联网平台找到开发者文档按照文档示例进行开发。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MQTT协议学习:2、MQTT中间件搭建及现成MQTT中间件服务 的相关文章

  • 在微信小程序上使用 mqtt

    大家知道 微信小程序的websocket API他们自己定制了 这样一些运行在浏览器里的库默认是运行不了的 比如mqttjs这个库 https github com mqttjs MQTT js 由于搜狗公司兄弟团队的一个微信小程序要跑mq
  • DNS使用TCP与UDP

    DNS同时占用UDP和TCP端口53是公认的 这种单个应用协议同时使用两种传输协议的情况在TCP IP栈也算是个另类 但很少有人知道DNS分别在什么情况下使用这两种协议 先简单介绍下TCP与UDP TCP是一种面向连接的协议 提供可靠的数据
  • Paho MQTT Android 服务问题

    我正在我正在开发的应用程序中实现 Paho MQTT Android 服务 在测试了 Paho 提供的示例应用程序后 我发现有一些我想要更改的内容 https eclipse org paho clients android 一旦应用程序完
  • 使用单连接实例实现 Eclipse MQTT Android 客户端

    我在我的应用程序中使用 Eclipse Paho android mqtt 服务 我能够订阅消息并将消息发布到 mqtt 代理 我的应用程序中有几个活动 当任何活动启动时 它都会使用以下方式连接到代理mqttAndroidClient co
  • Paho Mqtt Android 连接到代理失败,并显示 (32103)

    我的网络中有一个 ActiveMQ 代理正在监听 1883 mqtt 如果我使用简单的 Java 应用程序和 mqtt client 0 4 0 jar 库连接到该代理 则一切正常 现在我想使用 Android 设备连接到该经纪人 不幸的是
  • 在 Linux 上使用 cmake 独立编译 PahoMqttCpp 示例

    My goal 就是使用示例代码async subscribe cpp来自 PahoMqttCpp 项目 https github com eclipse paho mqtt cpp 作为一个独立的应用程序 然后根据我的需要对其进行修改 我
  • 为 MQTT 配置 Nginx 反向代理

    我正在尝试设置一个反向代理 将 localhost 8081 解析为安装在另一台计算机上的代理 我的 Nginx 配置文件是 worker processes 1 events worker connections 1024 server
  • 示例 MQTT 客户端代码不工作 C

    我从那里得到了示例代码here 我有头文件MQTTClient h以及 但是 当我构建时 我收到错误 undefined reference to MQTTClient create undefined reference to MQTTC
  • python paho mqtt无法使用用户名和密码连接到mqtts

    我的 raspberrypi 上的以下 python 代码无法连接到我的 mqtt 代理 它只是在打印后挂起Connecting import paho mqtt client as mqtt def on connect client u
  • 如何使用 libmosquitto 进行编译

    我正在尝试编译 libmosquitto 网站 底部 上提供的代码示例 http mosquitto org man libmosquitto 3 html 我使用 Ubuntu 12 04 并且安装了 libmosquitto1 和 li
  • Mqtt 客户端如何知道另一个客户端是否已连接

    大家好 我的问题是我需要保持设备 客户端 的状态 因为它们是否在线 我通过客户端 ID 进行连接 通过订阅主题 我可以知道设备已断开连接 但如果它们再次连接 我如何检查它们是否再次连接 简而言之 你不需要 在协议级别 发布者和订阅者完全不知
  • 如何通过互联网使用 MQTT?

    目前 我正在成功运行一个 mosquitto 代理 订阅主题并与本地网络中的客户端发布消息 如何与位于不同 IP 地址的另一个本地网络进行通信 我应该设置 2 个 mosquitto 经纪人 每个本地网络一个吗 其他本地网络中的 PC 需要
  • Cumulocity smarREST 响应模板

    我正在尝试设置 Cumulocity smartREST 响应模板以提供应用程序存储的设备对象的信息 我认为这是不可能的 但我想确认一下 因为文档很简短而且不清楚 我之前已经成功实现了测量发布模板 但我现在正在尝试执行库存获取 我已经在设备
  • 将 Reactjs 连接到 Myqtthub

    您好 我对所有物联网事物都很陌生 我希望能够使用 mqtt 从 Arduino 发送和接收数据https myqtthub com https myqtthub com作为我们的经纪人 我使用以下代码进行连接 import React Co
  • 如何M2MQTT自动重连

    我正在尝试使用此协议 并且已经有 2 个客户端 一个用于发布 另一个用于订阅 和一个正在工作的经纪人 我的问题是我想在订阅客户端中实现重新连接功能 因为 wifi 信号不稳定并且不想每次都手动重新启动客户端 我该如何实现这一点 您可以使用
  • AWS-IOT Mqtt Broker 是否会记住跨客户端连接订阅的客户端和未传递的消息?

    AWS 文档在此 http docs aws amazon com iot latest developerguide iot message broker html http docs aws amazon com iot latest
  • 无法在 Istio 代理后面的 k8s 中建立与 VerneMQ 集群的 mqtt 连接

    我正在设置 k8s 本地 k8s 集群 对于测试 我在使用 kubeadm 设置的虚拟机上使用单节点集群 我的要求包括在 k8s 中运行 MQTT 集群 vernemq 并通过 Ingress istio 进行外部访问 无需部署 ingre
  • 将消息从 AWS Lambda 发布到 AWS IoT

    我正在尝试使用 Nodejs 将消息从 AWS Lamba 发布到 AWS IoT 我已压缩该项目并上传到 AWS IoT 下面是代码片段 var awsIot require aws iot device sdk var device a
  • 在文件之间共享 mqtt 客户端对象

    我这样连接到 MQTT mqtt js const mqtt require mqtt var options needed options var client mqtt connect mqtt someURL options clie
  • 如何在 Wildfly 中使用 MQTT 和 JMS?

    我正在开发一个平台来监视和控制使用 MQTT 作为通信层的设备 我将 REST 端点用于基于 Angular2 的 SPA Web 后端是使用 WildFly 在 JEE 中开发的 它通过 JMS 代理 ActiveMQ Artemis 支

随机推荐

  • MongoDB 查看集合中所有的数据

    找到mongodb的安装路径下bin目录 运行mongo exe 输入show dbs 命令 查看数据库 进入要使用的数据库 命令 use 数据库名字 查看该数据库中的集合 命令 show collections 查看里面所有的数据 命令
  • css预处理器

    一 为什么会出现css预处理器 CSS不是一种编程语言 仅仅只能用来编写网站样式 在web初期时 网站的搭建还比较基础 所需要的样式往往也很简单 但是随着用户需求的增加以及网站技术的升级 css一成不变的写法也渐渐不再满足于项目 没有类似j
  • 高并发+海量数据下如何实现系统解耦?【中】

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 一 前情提示 二 清晰划分系统边界 三 引入消息中间件解耦 四 利用消息中间件削峰填谷 五 手动流量开关配合数据库运维 六 支持多系统同时订阅数据 七 系统解耦
  • Session实现用户登录(九)

    一 创建登录页面
  • 【详细】阿里云OSS上传文件

    原文链接 https www fearlazy com index php post 319 html 1 登录OSS管理控制台 点此快速传送 登录后点击右上角的控制台 若之前没进入过OSS管理控制台 可以在中间上方进行搜索OSS 点击控制
  • mysql输入密码后闪退问题

    有时候进入mysql明明密码输入对了 但无论无何都会闪退 就类似于密码错误退出控制台的效果 导致进不来数据库 更别说开发了 解决办法 先停止mysql服务 不懂停止 找到你的mysq安装目录 里面有个my ini配置文件 编辑它 打不开 试
  • 自然语言处理的应用,自然语言处理就业前景

    自然语言处理是一项多领域交叉的技术 具有广泛的应用和就业前景 以下是一些主要的应用场景 1 智能客服 利用自然语言处理技术实现智能问答系统 自动回复 机器人客服等服务 提高客户满意度和效率 2 搜索引擎优化 自然语言处理可以帮助搜索引擎更好
  • 调试osgEarth(三十三)分页瓦片卸载器子节点的作用--(2)删除活跃的瓦片节点

    感谢 hankern 学习链接在https blog csdn net hankern article details 85407803 很遗憾 这个版本不能这么用了 unloadChildren 注释掉了 也没有扫描器了 断点设置在tra
  • 豪斯曼检验matlab,豪斯曼检验、空间面板模型选择等问题

    各位大神 本人空间计量小白 最近看了姜磊老师的书 自己也进行了实证分析 有一些问题不太懂 1 空间面板数据模型分为混合空间面板数据模型 空间固定效应空间面板数据模型 时间固定效应空间面板模型 空间和时间双固定效应的空间面板数据模型 随机效应
  • (小白嵌入式)基于S5pv210的arm初级驱动开发之环境安装(一)

    一 安装环境需要准备的资源 linux 3 0 8 tar bz2 liunx内核代码 rootfs fs210 tgz 文件系统 toolchain 4 5 1 farsight tar bz2 交叉编译工具 zImage308 内核镜像
  • Java基础--java注解

    一 什么是java注解 一 概念 1 java注解 说明程序的 是给计算机看的 也叫元数据 一种代码级别的说明 又叫java标注 是jdk1 5引入的一种注释机制 与类 接口 枚举是在同一个层次 可以声明在包 类 字段 局部变量里面 方法参
  • log4j:WARN No appenders could be found for logger 问题解决

    在springmvc的web项目中常常会在tomcat启动的时候出现这种提示 log4j WARN No appenders could be found for logger org springframework web context
  • MATLAB: cat函数使用

    参考链接 http www ilovematlab cn thread 53313 1 1 html cat 用来联结数组 用法 C cat dim A B 按dim来联结A和B两个数组 C cat dim A1 A2 A3 按dim联结所
  • vue3中element-plus的一些消息提示框,弹出框没有样式效果

    在main ts中进行样式的引入就行了 这类bug都可以这样解决 import element plus theme chalk el loading css import element plus theme chalk el messa
  • 前段自学笔记9:JavaScript流程控制-分支

    文章目录 1 流程控制 分支结构 1 if 语句 2 三元组表达式 A B C 3 switch语句 循环结构 1 for循环 2 while循环 3 do while循环 4 continue break 1 流程控制 在一个程序执行的过
  • visio跨职能流程图带区背景及大小及改变格式 (转)

    1 增加职能部门 将 职能带区 主控形状拖至绘图页即可 2 改变带区宽度或高度 选中带区的标题 gt 出现控制点后再调整3 改变方向 也许不可能4 改变带区背景颜色 将鼠标连续点击带区的边线 间隔点时间 会在三个区中切换 带区标题 带区 整
  • 【编译原理与技术】递归下降语法分析器(C++实现)

    目录 内容 示例 具体实现 C 代码 运行结果 内容 实现以下语法的递归下降分析 示例 对于以下代码给出其递归下降语法分析过程 i 2 while i lt 100 sum sum i i i 2 具体实现 首先对上下文无关文法进行检查 消
  • 电脑提示msvcp120.dll丢失解决步骤(win系统)

    因为缺少了动态链接库也就是以DLL系统文件 我们该如何安装或许修复进去电脑呢 首先是打开电脑浏览器后在顶部输入 dll修复程序 site 按下键盘的回车键打开 点击下载vcruntime140 1 dll系统文件安装包 dll问题描述 打开
  • 手写Spring源码(简化版)

    导航 Java笔记 踩坑汇总 Java基础 进阶 JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud 黑马旅游 谷粒商城 学成在线 MySQL高级篇 设计模式 牛客面试题 代码 https wwmg lanzou
  • MQTT协议学习:2、MQTT中间件搭建及现成MQTT中间件服务

    MQTT协议学习 2 MQTT中间件搭建及现成MQTT中间件服务 文章目录 MQTT协议学习 2 MQTT中间件搭建及现成MQTT中间件服务 1 MQTT协议再解读 2 RabbitMQ 1 简介 2 安装 3 使用 3 物联网平台 1 M