热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

MQTT协议学习:2、MQTT中间件搭建及现成MQTT中间件服务文章目录MQTT协议学习:2、MQTT中间件搭建及现成MQTT中间件服务1.MQTT协议

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




文章目录

  • MQTT协议学习:2、MQTT中间件搭建及现成MQTT中间件服务
    • 1. MQTT协议再解读
    • 2. RabbitMQ
      • (1). 简介
      • (2). 安装
      • (3). 使用
    • 3. 物联网平台


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客户端进行协议接入即可,这里就不展开了,只需要搜索对应的物联网平台找到开发者文档按照文档示例进行开发。


推荐阅读
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 如何在C#中配置组合框的背景颜色? ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
  • C#编程中按钮控件的使用与优化 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 探索偶数次幂二项式系数的求和方法及其数学意义 ... [详细]
  • 利用Python与Android进行高效移动应用开发
    通过结合Python和Android,可以实现高效的移动应用开发。首先,需要安装Scripting Layer for Android (SL4A),这是一个开源项目,旨在为Android系统提供脚本语言支持。SL4A不仅简化了开发流程,还允许开发者使用Python等高级语言编写脚本,从而提高开发效率和代码可维护性。此外,SL4A还支持多种其他脚本语言,进一步扩展了其应用范围。通过这种方式,开发者可以快速构建功能丰富的移动应用,同时保持较高的灵活性和可扩展性。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
author-avatar
手机用户2502876103
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有