XXL-MQ v1.4.0能作为轻量级分布式消息队列,解决哪些问题?
摘要:Release Notes 1、【重构】XXL-MQ 核心代码重构,基于“存算分离”与“分区机制”设计思想。在轻量级、分布式的基础上,强化高吞吐、海量消息及水平扩展能力。; 2、【新增】存算分离:消息中心(Broker)与消息存储层(Sto
Release Notes
1、【重构】XXL-MQ 核心代码重构,基于“存算分离”与“分区机制”设计思想。在轻量级、分布式的基础上,强化高吞吐、海量消息及水平扩展能力。;
2、【新增】存算分离:消息中心(Broker)与消息存储层(Store)解耦。消息中心 提供消息OpenApi以及消息控制台管理能力;消息存储层 提供消息存储能力。得益于存算分离系统设计,消息中心支持水平扩展,支持线性提升消息吞吐及存储能力。
3、【新增】分区机制:针对消息数据进行分区路由计算及隔离,结合在线消费者进行 “分区动态平衡分配”(每个消费者分配负责分区区间),实现消费者与消息数据的灵活路由绑定。基于分区机制,灵活实现并行、串行、分片、Hash、广播...等多消息类型,保障系统高吞吐特性。
4、【增强】扩展支持多消息类型:
并行消息:多个消费者并行消费数据,支持轮询或随机策略。适用于消息吞吐量较大的业务场景,如邮件发送、日志记录等。
串行消息:同一时刻只有一个消费者消费数据,消息按照生产顺序FIFO串行消费。适用于有串行消费诉求的业务场景,如秒杀、抢单等场景;
分片消息:支持根据业务参数进行Hash分片,相同分片的消息数据路由至同一个消费者FIFO串行消费,不同分片的消息数据路由至不同消费者并行执行。适用于有根据业务参数分片消费的业务场景,如短信发送,可实现同一个手机号(业务参数)的消息路由至单个消费者串行消息,同时全局消息分片并行消费。
广播消息:消息发送后,广播发送给相关主题全部在线消费者。适用于广播消息场景,如广播通知、广播更新缓存等;
延时消息:支持设置消息的延迟生效时间,到达设置的生效时间时该消息才会被消费。适用于延时消费场景,如订单超时取消、定时发送邮件等;
失败重试消息:支持设置消息的失败重试次数,自定义重试间隔侧路,消息失败时会主动进行重试消费,直至重试次数耗尽或者消费成功。
5、【增强】海量消息:消息存储基于DB实现,支持Mysql、TiDB多存储介质;消息存储进行冷热设计,并滚动式清理归档,支持海量消息堆积(Mysql存储支持千万级;TiDB存储支持10亿级/理论无上限)。
6、【新增】超时控制: 支持自定义消息超时时间,消息消费超时将会主动中断;
7、【新增】跨语言/OpenAPI:提供语言无关的消息中心 OpenAPI(RESTFUL 格式),提供消息生产、拉取及消费等能力,实现多语言支持;
8、【增强】易用性提升: 一行代码即可发布一条消息,一行注解即可订阅一个消息主题,接入灵活方便;
9、【增强】消息可视化: 提供消息中心Web控制台,可在线管理消息主题、消息数据,查看消费数据及消费轨迹等;
10、【新增】容器化:提供官方Docker镜像,并实时更新推送DockerHub,进一步实现产品开箱即用;
XXL-MQ 代码接入示例:
步骤一:开发 “消费者(Consumer)” 代码
@XxlMq("topic_sample")
public void consume() {
// 获取消息内容;
String messageData = XxlMqHelper.getMessageData();
// 设置消息消费结果,可选;不设置时,默认为消费成功;
XxlMqHelper.consumeSuccess();
}
步骤二:发送(生产)消息数据
// 简单发送消息
XxlMqHelper.produce("topic_sample", "消息数据" );
// 指定延时生效时间
XxlMqHelper.produce("topic_sample", "消息数据", effectTime, );
步骤三:消息Topic管理 (可选)
登陆 “XXL-MQ消息中心” ,支持针对消息Topic进行管理维护,包括: “消息路由策略、归档清理策略、失败重试策略、超时时间控制” 等信息管理维护。
(说明:该步骤为可选操作。消费者服务启动后将会自动注册生成 Topic信息,如果没有Topic信息定制修改诉求,可忽略该步骤。)
XXL-MQ 消息中心:消息主题(Topic)管理;
XXL-MQ 消息中心:消息主题(Topic)编辑;
步骤四:消息数据管理(可选)
登陆 “XXL-MQ消息中心” ,支持线上化管理维护消息数据,包括:“查询消费轨迹”、“消息数据清理”、“消息数据归档” 等管理操作。
项目简介:
XXL-MQ是一个轻量级分布式消息队列,具备“轻量级、分布式、高吞吐(单机TPS 10W+)、海量消息(亿级)” 等特性,支持 “并行消息、串行消息、分片消息、广播消息、延迟消息、失败重试消息”多消息类型,现已开放源代码,开箱即用。
