RocketMQ体验

简介: 本次体验将从入门体验、进阶体验、场景应用与价值思考等方面进行分析。

RocketMQ体验

一、入门体验

1.1、产品开通

本次活动阿里提供了免费试用计划,我们可以通过活动页面快速申请开通试用。在开通RocketMQ产品的同时,我们同步需要先创建VPC等相关资源。

1.2、云消息队列RocketMQ体验

登录阿里云控制台,我们可以快速找到RocketMQ控制台入口,进入后,我们可以看到RocketMQ的全场景应用的一些描述。通过它可以让用户快速的对该产品有一个初步的了解。

然后,用户可以快速进入到Rocket实例列表页。在该页面上,我们可以看到我们开通的实例的名称、实例产品版本号、类型、产品的付费方式以及Topic和Group的数量等重要信息。进入实例详情页后,我们可以查看更详细的信息,包括实例的具体详情、Topic的管理、Group的管理、仪表盘、监控报警、消息查询以及消息轨迹等功能。这些功能能够帮助用户更好地管理和监控Rocket实例的运行情况,以便更高效地处理消息和确保系统的稳定性。

我们按照实验要求,体验了普通消息场景、定时消息场景、事务消息场景、顺序消息场景、消息堆积场景、消息失败重投场景。我这里只是简单附上几个实验过程的截图。

1.2、体验感受及建议

整个体验过程相对来说非常愉快,过程中没有碰到任何问题。但是对于一些刚接触RocketMQ产品的用户。我还是希望他们在体验该产品的同时,可同步学习理解RocketMQ的一些基本知识。比如理解消息类型,RocketMQ支持多种类型的消息,如普通消息、定时消息、事务消息和顺序消息,了解每种消息类型的特点和适用场景。

二、进阶体验

接下来将重点评估RocketMQ在消息堆积和消息失败重投场景下的表现,并结合行业场景进行分析。

2.1、消息堆积场景:

消息堆积是指由于消费者的消费能力有限,未能在短时间内将所有消息正确消费掉,导致服务端保存着未被消费的消息的状态。在RocketMQ中,通过Metrics指标可以直接反映队列中消息的处理速率和堆积情况。

在行业场景中,消息堆积可能发生在高峰期或者消费者处理能力不足的情况下。例如,在电商行业的双十一促销期间,消息流量可能会剧增,而消费者的处理能力可能无法及时消费所有的消息。在这种情况下,RocketMQ的消息堆积场景能够提供以下优势:

  • 高可靠性:RocketMQ通过持久化存储消息,确保即使在消费者处理能力不足的情况下,消息不会丢失。这对于电商行业来说尤为重要,因为任何一条丢失的订单消息都可能导致损失。
  • 实时监控:RocketMQ提供了Metrics指标,可以实时监控消息堆积情况。通过监控指标,运维人员可以及时发现消息堆积问题,并采取相应的措施,如增加消费者的数量或者调整消费者的处理能力。
  • 弹性扩展:RocketMQ支持水平扩展,可以根据业务需求动态增加消费者的数量。这使得在高峰期时,可以快速扩展消费者的规模,以应对消息堆积的挑战。

2.2、消息失败重投场景:

消息失败重投场景发生在消费者消费消息失败的情况下,RocketMQ会按照最大重试次数重新投递该消息进行故障恢复。在集群模式下,消费的业务逻辑代码会返回消费失败状态或者抛出异常,如果一条消息消费失败,则会按照设置的最大重试次数重试,之后该消息会被丢弃。

在行业场景中,消息失败重投场景可能发生在消费者处理消息时出现异常或者网络故障的情况下。例如,在金融行业的支付系统中,如果消费者在处理一笔支付消息时出现异常,RocketMQ的消息失败重投机制能够提供以下优势:

  • 故障恢复:RocketMQ会按照最大重试次数重新投递消息,确保消息能够被成功处理。这对于金融行业来说尤为重要,因为任何一笔支付消息的丢失或者处理失败都可能导致资金损失。
  • 可靠性保证:RocketMQ的消息失败重投机制保证了消息的可靠性。即使在消费者处理消息时出现异常,RocketMQ会不断尝试重投,直到达到最大重试次数或者消息被成功处理。
  • 弹性配置:RocketMQ允许用户根据业务需求灵活配置最大重试次数。这使得用户可以根据业务的敏感性和重要性,调整消息失败重投的策略。

RocketMQ在消息堆积和消息失败重投场景下展现出了卓越的性能和可靠性。在行业场景中,RocketMQ的消息堆积场景能够提供高可靠性、实时监控和弹性扩展的优势;而消息失败重投场景则能够提供故障恢复、可靠性保证和弹性配置的优势。这些特性使得RocketMQ成为金融级业务消息的首选方案,并在阿里集团内部业务、阿里云以及开源社区中得到广泛应用。

三、场景应用与价值思考

3.1、场景应用

在体验了RocketMQ之后,我一直在思考如何将该产品与我们公司的其他产品进行融合。很快我发现,在我们的C端产品中,特别是智能家居和健康监测场景中,我们可以完全嵌入RocketMQ。

在智能家居与健康监测场景中,我可以使用RocketMQ来实现设备之间的消息传递和数据同步。以下是一个基本的思路方案(目前还不够成熟):

  1. 架构设计:
  • 生产者:智能家居设备(如智能床垫、智能镜子、智能厨房)作为消息的生产者,将采集到的数据发送到RocketMQ。
  • 消费者:健康管理应用程序作为消息的消费者,从RocketMQ订阅数据并进行处理。
  1. 消息主题设计:
  • 我可以为每个智能家居设备定义一个独立的消息主题,例如"smart_bed"、"smart_mirror" 和 "smart_kitchen"。
  • 每个主题可以有多个标签(tags),用于区分不同类型的消息,例如"sleep_quality"、 "skin_health" 和 "diet_advice"。
  1. 数据传递流程:
  • 智能家居设备将采集到的数据封装成消息,包括设备标识、数据类型和具体数据内容。
  • 生产者将消息发送到对应的主题和标签。
  • 消费者通过订阅相应的主题和标签来接收消息。
  • 健康管理应用程序可以根据接收到的消息进行相应的处理和展示,例如生成睡眠报告、提供皮肤健康建议和推荐健康食谱。
  1. 高可用性和可靠性:
  • 使用RocketMQ的集群模式,将消息队列部署在多个节点上,以提高可用性和容错能力。
  • 配置消息的持久化,确保消息在发送和接收过程中不会丢失。

目前只是一个初步的方案,在具体执行过程,我还需要细化每一个环节,对具体需求进行调整和扩展。

3.2、价值思考

初步来看,在智能家居与健康监测场景下引入RocketMQ产品,是一种可行的方案。它可以提供高可靠性、可伸缩性、异步通信、实时数据处理、消息顺序保证以及可扩展性和灵活性等。它的这些特性将从多方面为企业带来收益和价值,同时也可以为业务应用带来更好的性能和用户体验。

四、总结

云消息队列 RocketMQ 版(原ONS)是阿里云基于Apache RocketMQ构建的低延迟、高并发、高可用、高可靠的分布式“消息、事件、流”统一处理平台。它具有低延迟和高吞吐量的能力,可以满足高并发的消息传输需求。同时,RocketMQ具有高可靠性,能够确保消息的可靠传输,不会丢失任何重要的数据。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
8月前
|
消息中间件 弹性计算 Java
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
481 0
|
2天前
|
消息中间件 存储 JSON
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
43 0
|
9月前
|
消息中间件 Java Maven
RocketMQ 入门使用
RocketMQ 入门使用
183 1
|
10月前
|
消息中间件 RocketMQ
RocketMQ快速上手(全)
RocketMQ快速上手(全)
|
10月前
|
消息中间件 存储 Java
RocketMQ 的优势
RocketMQ 的优势
439 0
|
12月前
|
消息中间件 存储 Oracle
RocketMQ-初体验RocketMQ(01)_RocketMQ初体验
RocketMQ-初体验RocketMQ(01)_RocketMQ初体验
126 0
|
消息中间件 RocketMQ
rocketmq学习2
前面我们已经通过quickstrat可以看到nameServer的启动:从启动类中,我们看到:首先创建NamesrvConfig、nettyServerConfig,设置监听端口,将8888改成9876。填充NamesrvConfig、NettyServerConfig、BrokerConfig,获取namesrvAddr,创建Controller,注册钩子函数,启动start。 NamesrvController的属性信息、构造函数:
88 2
rocketmq学习2
|
消息中间件 RocketMQ 索引
Rocketmq学习一
首先从github中拉取Rocketmq的代码,进行运行。 1.由于rocketmq需要依赖nameServer,类似于zookeeper。首先启动时,配置好NamesrvStartup的环境变量信息,也即rocketmq的ROCKEMQ_HOME与你的项目对应。接着就可以启动了。
263 2
Rocketmq学习一
|
消息中间件 监控 Cloud Native
RocketMQ 在网易云音乐的实践
最佳实践丨网易云音乐线上场景众多,比如直播、评论、广告等各个业务线都会有消息场景,一起来看看 RocketMQ 在云音乐的落地实战经验分享吧~
215 0
RocketMQ 在网易云音乐的实践
|
消息中间件 算法 Java
使用RocketMQ遇到过问题?细数RocketMQ的5个问题
前分享一一些关于RocketMQ的源码文章,认识到RocketMQ里面真的非常丰富