Emqx的简单使用

news2024/11/19 1:49:29

Emqx 是一个mqtt 的服务器产品。之前activemq可以作为mqtt协议的服务器,但是功能相对来说比较单一。Emqx作为跟Mqtt协议相关的新一代产品,功能实际上更为强大。

它的功能也主要体现在可视化/认证/规则/httpApi 上面。

1.Emqx 的安装

这里采用了docker 安装,作为dev 的单机版,使用docker 安装是比较快速的。

docker pull emqx/emqx:5.0.21
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.0.21

上述的命令 启动了一个私有化的emqx,
emqx的后台是:http://localhost:18083 账户密码是admin/public。

使用 1883 端口的 TCP 类型监听器
使用 8883 端口的 SSL/TLS 安全连接类型监听器
使用 8083 端口的 WebSocket 类型监听器
使用 8084 端口的 WebSocket 安全类型监听器

但是这个好像只是测试版本,只能有10条链接。

在这里插入图片描述

2.可视化功能

可视化功能主要在 主题/订阅/客户端 这里,这个倒是很常见,任何一个具有后台管理功能的都会有这些东西.

在这里插入图片描述

3.认证

mqtt协议里面 有用户名和密码或者认证的body块.

刚刚安装好的emqx 是可以匿名连接上的.这是基于如下的这个设置.
在这里插入图片描述


刚刚安装好的emqx,也可以匿名直接发布消息和订阅的.这是基于这个配置.

在这里插入图片描述

它里面的配置如下:

%% 允许 "dashboard" 用户 订阅 "$SYS/#" 主题

{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.

%% 允许 IP 地址为 "127.0.0.1" 的用户 发布/订阅 "#SYS/#","#" 主题

{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.

%% 拒绝 "所有用户" 订阅 "$SYS/#" "#" 主题

{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.

%% 允许其它任意的发布订阅操作

{allow, all}.

具体的可以看:https://docs.emqx.com/zh/enterprise/v4.4/modules/internal_acl.html#%E5%AE%9A%E4%B9%89-acl

这里的配置 从上到下,匹配哪个就算哪个,不再继续往下匹配.

所以这里明显意思就是,基本上都可以订阅和发布,但是对于 系统配置的主题 作了严格的限制,只允许本机发布,和用户为dashboard的进行订阅.


那么如果我们将刚才的匿名链接改成false, 内置访问控制不变.那就意味着必须有用户才能连上,连上后可以随意订阅和发布(当然$SYS除外)

但此时出现了一个问题,既然是非匿名,那么用户名密码放哪里?可以放在mysql里面,我们添加个mysqk的控制访问.这个mysql控制访问是比上面的内置访问控制 要功能多一点,也可以两者一起使用.

在这里插入图片描述

我们需要在一个mysql里面存放一个用户名密码表,也就是认证表

CREATE TABLE `mqtt_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(100) DEFAULT NULL,
  `password` varchar(100) DEFAULT NULL,
  `salt` varchar(35) DEFAULT NULL,
  `is_superuser` tinyint(1) DEFAULT 0,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mqtt_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

然后配置下,参考链接:https://docs.emqx.com/zh/enterprise/v4.4/modules/mysql_authentication.html#%E5%88%9B%E5%BB%BA%E6%A8%A1%E5%9D%97

在这里插入图片描述

注意上述图片中的认证语句就是我们存用户名密码表的查询语句。

注意上述图片中的访问控制SQL查询语句,实际上是可以代替上面的内置访问控制

在完成上述操作后,在数据库里面添加用户名密码,那么就只有用户名和密码的才能够链接上。


注意这个只是用户名密码的认证方式,在emqx里面有很多的认证方式,请自行查阅使用。

4规则

在使用activemq或者其他mq时候,作为消费者,接到复杂消息 需要进行判断处理。

这里的emqx 做了进一步的处理链路,可以判断消息是什么样的,然后根据判断条件 做出相关的操作。
比如说:

  • 如果消息里面的数据包含type=aaa,那么将此消息通过http发送到http://localhost:8080/aaa 上
  • 如果消息里面的数据 age > 10 ,那么将此消息 同步到 一个kafka 上面。
  • 如果某个主题 被链接上了,那么将客户端的一些数据保存到mysql上面
    ok,这个就是一个路由功能。

在这里插入图片描述

上述就是 监听t/# 主题 只要链接上,就执行一条插入语句。
这个规则学习可以查看一个B站视频:https://www.bilibili.com/video/BV19T4y1w7Nj?t=5.3

5http Api

EMQX 提供了 HTTP API 以实现与外部系统的集成,例如查询客户端信息、发布消息和创建规则等。

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

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

相关文章

JMeter 计算上一个接口取值到本次接口进行四则运算赋值

项目场景: 公司项目需要接口关联计算进行赋值: 项目场景:A接口提取的返回值,在传到B接口使用时,需要先进行四则运算后,再赋值使用。 A接口提取的值 B接口需要使用计算后的值 问题描述 使用beanshell预…

必须掌握的ArrayList,LinkedList,HashMap,HashTable,Collection,Colections

人的自由并不在于可以做他想做的事,而在于可以不做他不想做的事。 ArrayList和linkedList的区别 Array数组是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的 Array获取数据的时间复杂度是o(1)&#xff…

南卡OE系列再添新成员,造型犀利有型,性能强劲动听!

科技的快速发展让消费者对智能互联、操作体验、设计审美、安全健康等需求越发高涨,蓝牙耳机也正在由功能性向舒适性方向发展。如何提高蓝牙耳机的舒适度、拥有更舒适的听歌体验,成为蓝牙耳机品牌和消费者共同努力的方向。 Nank南卡:更专业的骨…

【Linux】单机版QQ之管道中的命名管道

还记得上一篇的匿名管道吗? 文章目录 前言一、命名管道总结 前言 命名管道是什么呢? 管道应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信。 如果我们想在不相关的进程之间交换数据,可以使用FIFO文…

一百零七、MySQL数据库的数据备份与数据恢复

MySQL数据库的数据备份与恢复主要有3种方法,前两种都是MySQL dump命令,第三种则是用Navicat工具直接备份。相比而言,第三种方法更加简单! 1 方法一(MySQL dump命令) 1.1 登录MySQL [roothurys22 ~]# mysq…

Maya云渲染如何使用,Maya云渲染流程实操!

Maya 是一款专业的 3D 软件,用于创建逼真的角色和大片的效果,Maya可以加速工作流程,帮助您专注于创造力并按时完成任务。也可以为角色和场景添加精美的细节,并提供让客户满意的优质作品。更有无数业内顶级艺术家依靠 Maya来创作更…

【Halcon】新建程序 读取图片 路径设置

文章目录 1 新建程序2 读取一张图片3 图片路径4 图片格式读取报错5 快速添加 绝对路径 1 新建程序 点击新程序图标,即可新建; 程序另存为,会弹出保存路径 2 读取一张图片 read_image(Image,fabrik)此时工程路径下并没有图片; …

SpringBoot2 集成 ELK 实现日志收集

目录 一 简介 二 ELK 各组件作用 三 ELK 各组件安装 四 Spring Boot2 集成 logstash 一 简介 ELK 即 Elasticsearch、Logstash、Kibana 组合起来可以搭建线上日志系统,本文主要讲解使用ELK 来收集 SpringBoot2 应用产生的日志。 二 ELK 各组件作用 Elasticsea…

基于FPGA和Matlab实现的FFT功能验证

一 、FFT设计验证思路 1、基于Matlab与FPGA的混频sin信号的FFT验证,分别在Matlab和FPGA开发环境上实现相同的FFT功能设计。 2、Matlab平台开发,使用自带的fft函数与相关操作函数,绘制出混频sin信号,经过fft功能处理后的频谱图。 3…

2022 ios APP最新开发测试教程

转载:2022 ios APP最新开发测试教程1.本文详细介绍最新的在windows上进行ios app开发编译打包安装到手机测试的完整流程。介绍ios开发经常遇到的问题和解决方法,包括ios开发证书,ios开发描述文件等。http://kxdang.com/topic/appuploader/ios…

IP报文结构

文章目录 IP报文结构分片 IP报文结构 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. 4位头部长度(header length): 类似于TCP4位首部长度,通常填的是0101(十进制5) 16位总长度(total length): IP数据报整体占多少个字节.这用…

大数据企业应用合作解决方案案例

打造产教融合的就业育人的综合服务平台,给予十余年的数据智能产业实践经验,专注于大数据和人工智能方向。 目前合作的企业案例包括:信访大数据平台解决方案、工业废水处理解决方案、找齐远程监控解决方案、道路运输安全、广电用户服务大数据解…

VS2019 c++ cmake项目 打包并使用 (lib\dlll)

背景 最近项目中经常调用第三方库、带头文件、lib和dll的库,需要使用cmake进行项目管理,之前一直比较糊涂这方面,在这里做一个整理总结 编译汇编过程 静态链接方式: 把lib里面编译好的东西(函数、变量等&#xff09…

【Yolo】YoloV5训练自定义模型

【Yolo】Jetson Orin Nano下部署 YoloV5 上一篇博文主要记录了在Jetson Orin Nano下部署YoloV5环境,并运行了yoloV5n.pt模型,本篇在上一篇的基础上,进一步记录如何训练自己的目标模型,我们以一根口香糖盒子为训练对象进行说明。 …

Kali Linux 操作系统安装详细步骤——基于 VMware 虚拟机

1. Kali 操作系统简介 Kali Linux 是一个基于 Debian 的 Linux 发行版,旨在进行高级渗透测试和安全审计。Kali Linux 包含数百种工具,适用于各种信息安全任务,如渗透测试,安全研究,计算机取证和逆向工程。Kali Linux 由…

学习笔记(4)页面开发

目录 1,页面开发1.1,标签类1.2,资源引用1.3,页面跳转 2,开发规范2.1,应用生命周期2.2,页面生命周期:2.3,条件编译 3,注意事项 1,页面开发 1.1&am…

真实业务场景使用-模板模式+策略模式组合

模板和策略设计模式一般是使用最频繁的设计模式,模板的场景主要是处理一系列相同的流程,将这些流程放到模板里,每个流程里的处理可能有一些不一样的地方,则可以抽象出一个方法,由每一个有实际意义的子类实现。 策略模…

从供应链角度看进销存:区别与联系

供应链和进销存是两个紧密相关的概念,它们都涉及到企业在商品贸易中的运作过程。虽然它们有一些相似之处,但是它们也有一些显著的区别。本文将从几个方面探讨供应链和进销存的区别。 一、概念定义 供应链的定义:供应链是一系列的活动&#…

WPF 多媒体MediaElement 的使用(一)

本章讲述MediaElement的简单使用: WPF 中对于多媒体的支持非常完整,可以使用MediaElement 为应用程序添加媒体播放控件,以完成播放音频、视频功能。MediaElement 属于UIElement,同时也支持鼠标及键盘的操作。 想以交互方式停止、…

通达信N字形态选股公式,突破前期高点发出信号

行情经历一波上涨之后回调,然后再次上涨,形态类似于字母N,这就是N字形态。该形态在不同的分析方法中均有描述,如123法则、波浪理论等,只是名称不同而已。 本文的N字形态选股公式,以突破前期波段高点发出信号…