6-MQ篇-5

简介: EMQ X 是开源百万级分布式 MQTT 消息服务器,广泛应用于物联网、车联网、智能硬件等领域。支持 QoS 0/1/2 保障消息不丢、不重;提供延迟发布、点对点(共享订阅)与发布订阅模式,并在项目中用于设备通信及微服务间消息传递。(239字)

EMQ

01- EMQ是什么 ? 你们项目中哪里用到了EMQ?

EMQ X 是开源社区中最流行的 MQTT 消息服务器。

MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。

  • 物联网M2M通信,物联网大数据采集
  • Android消息推送,WEB消息推送
  • 移动即时消息,例如Facebook Messenger
  • 智能硬件、智能家居、智能电器
  • 车联网通信,电动车站桩采集
  • 智慧城市、远程医疗、远程教育
  • 电力、石油与能源等行业市场

所以EMQ的主要运用领域也就是物联网领域, 主要使用EMQ实现物联网设备之间的相互通信, 以及服务器和物联网设备之间的相互通信

EMQ X 是开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT 协议的设备,实现从设备端到服务器端的消息传递,以及从服务器端到设备端的设备控制消息转发。从而实现物联网设备的数据采集,和对设备的操作和控制

在我们的项目中主要使用EMQ实现了服务器和物联网设备之间的信息传输 , 而且使用EMQ作为消息队列产品实现了各个微服务之间的数据传输 , 例如 :

  • 设置状态实时监控
  • 自动维修工单创建和自动补货工单创建
  • 订单创建以及支付结果确认
  • 设备出货控制
  • 设置出货结果通知处理等
  • .....

02- 使用EMQ如何保证消息不丢失 ?

在MQTT 协议中规定了消息服务质量(Quality of Service),它保证了在不同的网络环境下消息传递的可靠性 !

MQTT消息服务质量QoS等级有三个级别 :

  • 0 : 消息最多传递一次, 可能会存在消息丢失
  • 1 : 消息至少传递一次 , 不会出现消息丢失, 但是可能会出现消息重复
  • 2 : 消息仅传递一次 , 不会出现消息丢失, 也不会出现消息重复

03- 使用EMQ如何保证消息不重复消费 ?

在MQTT 协议中规定了消息服务质量(Quality of Service),它保证了在不同的网络环境下消息传递的可靠性 !

MQTT消息服务质量QoS等级有三个级别 :

  • 0 : 消息最多传递一次, 可能会存在消息丢失
  • 1 : 消息至少传递一次 , 不会出现消息丢失, 但是可能会出现消息重复
  • 2 : 消息仅传递一次 , 不会出现消息丢失, 也不会出现消息重复

04- EMQ支不支持延迟消息, 如何实现 ?

EMQ X 的延迟发布功能可以实现按照用户配置的时间间隔延迟发布 PUBLISH 报文的功能。当客户端使用特殊主题前缀 $delayed/{DelayInteval} 发布消息到 EMQ X 时,将触发延迟发布功能。延迟发布的功能是针对消息发布者而言的,订阅方只需要按照正常的主题订阅即可

05- 使用EMQ如何实现点对点消息和发布订阅消息 ?

默认情况下EMQ中的消息会发送给所有订阅了主题的订阅者 , 就是一种发布订阅机制

EMQ X 支持两种格式的共享订阅前缀:

模式

示例

前缀

真实主题名

不带群组共享订阅

$queue/t/1

$queue/

t/1

带群组共享订阅

$share/组名称/t/1

$share/abc

t/1

如果想实现点对点消息, 可以采用EMQ中的不带群组的共享订阅 , 这样消息就只会被订阅者列表中的某一个订阅者接收, 可以在配置文件中配置负载均衡的策略broker.shared_subscription_strategy = random

均衡策略

描述

random

在所有订阅者中随机选择

round_robin

按照订阅顺序轮询

sticky

一直发往上次选取的订阅者

hash

按照发布者 ClientID 的哈希值

如果想不通的群组都只能有一个订阅者接收到消息, 可以使用带群组的共享订阅 , 这样每个群组中都会有一个订阅者接收到消息

目录
相关文章
|
4天前
|
关系型数据库 MySQL 测试技术
JOIN、IN、EXISTS谁最快?实测三种写法性能差异与执行计划深度剖析
本文用MySQL 8.0实测拆解`IN`/`EXISTS`/`JOIN`子查询性能:从执行计划、半连接优化、临时表开销等底层原理出发,结合10万+100万数据实测(`EXISTS`最快95ms),给出三条选型铁律——告别盲从“最佳实践”,只选最适配业务与数据的写法!
|
4天前
|
运维 Linux 程序员
初级程序员必备的十大技能之基础 Linux 命令(二)
教程来源 http://vrhyh.cn/ 本节系统介绍Linux文件内容查看与处理核心命令:`cat`快速显示/合并文件;`less`/`more`分页浏览;`head`/`tail`查看首尾及实时日志;`grep`精准搜索与过滤;`sed`流式文本替换删除;`awk`结构化字段处理;`vim`高效终端编辑。覆盖日常运维、日志分析与脚本开发必备技能。
|
4天前
|
IDE 编译器 开发工具
4轴运动控制源代码(STM32 + GRBL 1.1移植版)
4轴运动控制源代码(STM32 + GRBL 1.1移植版)
51 1
|
4天前
|
存储 关系型数据库 MySQL
7-事务控制篇-4
InnoDB支持事务、行级锁、外键及聚簇索引,具备崩溃恢复能力,是MySQL 5.5+默认引擎;MyISAM不支持事务与行锁,仅表级锁,存行数、用非聚簇索引,适合读多写少场景。
52 5
|
4天前
|
消息中间件 容灾
6-MQ篇-2
本文详解RabbitMQ延迟队列(TTL+死信交换机/延迟插件)、消息过期设置(队列级与消息级)、死信成因及死信交换机绑定方式,并介绍其高可用机制:普通集群(元数据共享)与镜像集群(全量数据同步、主从容灾)。
51 3
|
4天前
|
存储 算法 关系型数据库
7-事务控制篇-2
InnoDB与MyISAM均采用B+树索引,但实现迥异:InnoDB主键索引为聚簇索引,叶子节点存完整数据;MyISAM为非聚簇索引,索引与数据分离,叶子仅存行地址。辅助索引方面,InnoDB存主键值(需回表),MyISAM直接存物理地址。(239字)
47 2
|
4天前
|
SQL 关系型数据库 MySQL
7-事务控制篇-7
本文简述MySQL三大核心要点:联合索引的最左匹配原则(从左依次匹配,范围查询后失效)、SQL执行顺序(FROM→JOIN→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT),以及常见索引失效场景(如LIKE前导%、OR单边无索引、隐式类型转换、函数/运算操作等),并指出EXPLAIN是诊断索引是否生效的关键工具。(239字)
92 2
|
4天前
|
存储 SQL 关系型数据库
7-事务控制篇-5
事务具ACID四大特性:原子性(全成或全败)、一致性(状态合法)、隔离性(并发互不干扰)、持久性(提交即永久)。索引需注意字段非空、高区分度、长度适中、数量适度(更新频繁表≤3个),过多索引会增空间开销、拖慢增删改性能。
58 0
|
4天前
|
监控 Java 调度
定时任务概述
定时任务是按时间表达式调度执行的自动化任务,适用于对账、提醒、订单超时取消等场景。单体方案含Timer、ScheduledExecutorService、Quartz、SpringTask;分布式场景则需解决重复执行、动态调度等问题,主流框架有XXL-JOB、Elastic-Job、ScheduleX等。(239字)
59 0
|
4天前
|
SQL 关系型数据库 MySQL
MySQL慢查询诊断实战:从10秒到0.1秒,我的5步排障法
数据库小学妹分享慢查询优化实战:从10秒降至0.08秒!详解「发现→收集→分析→优化→验证」5步排障法,覆盖慢日志配置、EXPLAIN进阶、索引失效场景、JOIN与分页优化等核心技巧,附真实案例与速查表。