云消息队列RabbitMQ版测评报告

本文涉及的产品
资源编排,不限时长
简介: 在数字化快速发展的背景下,分布式系统的稳定性和可靠性至关重要。阿里云推出的云消息队列RabbitMQ解决方案,通过架构优化和一键部署,有效提升了系统的吞吐量和响应速度,降低了部署和维护成本。本文详细介绍了该方案的部署流程、方案验证,并提出了改进建议。

在当今数字化快速发展的时代,分布式系统的稳定性和可靠性对于企业来说至关重要。特别是在处理高并发、实时性要求高的场景下,消息队列作为一种异步通信的解决方案,能够有效地提高系统的吞吐量和响应速度。然而,传统的消息队列方案在部署和维护上存在一定的难度和成本。为了解决这一问题,阿里云推出了云消息队列RabbitMQ解决方案,旨在通过架构优化解决稳定性和成本问题。本文将从对云消息队列RabbitMQ版动手实践进行深入测评。

一、方案部署体验

1.1 架构设计
方案架构包含消息生产者、消息队列、消息消费者三个核心模块。消息在云消息队列 RabbitMQ 版的组件之间流动过程为:1. 生产者向 Exchange 发送消息;2. Exchange 根据消息属性将消息路由到 Queue 进行存储;3. 消费者从 Queue 拉取消息进行消费。
image.png
1.2 部署流程

一键部署流程大致分为以下几个步骤:

1、单击一键部署前往ROS控制台,修改资源栈名称,进行安全确认后点击创建。
image.png

2、单击下一步进行创建。
image.png
image.png
image.png

3、点击输出栏,查看AccessKeyId、AccessKeySecret。
image.png

4、设置静态用户名密码

1)在云消息队列 RabbitMQ 版控制台的左侧导航栏中,点击实例列表,打开具体实例,单击静态用户名密码。
image.png

2)在创建用户名密码面板,填写上一步创建的AccessKey ID和AccessKey Secret,单击确定。
image.png

3)记住创建的用户名和密码。
image.png

5、方案验证

一、通过Java实现消息收发,验证RabbitMQ消息流转

1)在pom.xml文件中添加以下依赖引入Java依赖库。
image.png

2)查看实例公网接入点。
image.png

3)创建消息发送程序,需要修改实例接入点,填写上面创建的用户名、密码。
image.png

4)创建消费订阅程序,需要修改实例接入点,填写上面创建的用户名、密码。
image.png

5)执行生产程序和消费订阅程序
image.png
image.png

二、通过消息轨迹,验证消息传递过程

1)返回消息队列RabbitMQ版控制台页签,在左侧导航栏中,单击Dashboard。
image.png

如果您是首次使用Dashboard功能,需要开通ARMS服务。
image.png

2)在Queue列表页面,单击test-queue。
image.png
image.png
image.png

3)在消息轨迹页面,您可以根据按Message ID查询和按Queue查询。

按Message ID查询:根据IntelliJ IDEA控制台打印的messageId可以精确查询对应消息的轨迹。
image.png

按Queue查询。
image.png

单击轨迹详情,查询对应消息的生产和投递轨迹详情。
image.png

查看监控面板
image.png

三、通过多线程并发测试,验证RabbitMQ高并发性能
image.png
这个还实验环境的代码总报错,没有查到问题原因。

6、释放资源

点击ROS控制台,在资源栈列表中找到创建的实例,点击删除,清理创建的资源。
image.png

二、总结

云消息队列RabbitMQ版通过资源编排ROS一键部署,有效解决了分布式系统中的稳定性和成本问题。其丰富的管理控制台功能和出色的性能表现,使得云消息队列RabbitMQ版成为企业处理高并发、实时性要求高的场景下的首选解决方案。

关于本次实践体验的反馈和建议如下:
1)整个实践手册中方案验证过程没有很好的展示出Exchange在这里的作用。
2)在部署体验过程中主要在构建消息发送程序和消费订阅程序时,按文档中进行操作,有如下的报错。
image.png
image.png

反复修改了好多次。希望这里可以完善下如何在IntelliJ IDE上一步步配置的截图,如果是个零基础的用户对这部分操作可能会有点问题。现在这部分文档有点太简化了。或者可以提供一个远程仓库地址,使用用户来clone使用。

在多线性程序测试也是同样的问题与建议。文档还是建议尽可能的详细,把每个用户当做小白

3)在创建生产消息和订阅消息后缺少了去执行这两个java项目的步骤。否则后面的Dashboard中是查询不到数据的。
image.png

4)在代码参数这里hostname应该提示填写使用公网接入点还是VPC接入点,还是两者都可以。
image.png

image.png

5)在该实践方案中没有体现云消息队列RabbitMQ的多可用区高可用(当某个可用区服务异常时,客户端可以通过自动重连功能,无缝切换到其他可用区使用)和单队列横向扩展的两个核心优势。

6)针对云消息队列RabbitMQ版的定时消息能力的应用场景本次的部署方案中没有涉及,希望方案中可以增加这部分内容。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
消息中间件 监控 持续交付
《云消息队列RabbitMQ实践》解决方案测评报告
《云消息队列RabbitMQ实践》解决方案通过RabbitMQ实现业务解耦、异步处理和高可用性。其核心优势包括消息持久化、灵活路由及高可靠性。文档详细介绍了部署步骤、配置方法及监控手段,帮助用户快速搭建消息队列系统。方案适用于电商、金融和实时数据处理等高并发场景,通过异步处理提升系统性能。建议增加自动化部署、复杂场景示例及更详尽的日志解析,进一步提升用户体验。
|
1月前
|
消息中间件
实践部署《云消息队列RabbitMQ实践》测评
《云消息队列RabbitMQ实践》解决方案原理清晰,尤其在异步通信和解耦方面解释详尽。对初学者而言,部分术语如消息持久化、确认机制及集群性能优化可更细致。部署过程文档详实,涵盖主要环节,但插件配置等细节存在环境问题,需查阅社区资料解决。该方案展示了RabbitMQ的高吞吐量、灵活路由和可靠消息传递能力,但在高可用性和消息丢失处理上可提供更深入配置建议。适用于高并发和解耦场景,如订单处理、日志收集,有助于提升系统可扩展性。总体部署体验良好,实用性较强。
49 0
|
消息中间件 Cloud Native 物联网
阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证
在混沌工程技术沙龙--金融行业精品专场的分布式系统稳定性评估体系获奖名单中,阿里云分布式消息队列服务成为通过首批消息队列服务稳定性认证,荣获最高级别 “先进级” 认证的消息队列服务。
512 0
阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证
|
4月前
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
17天前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
2月前
|
消息中间件
手撸MQ消息队列——循环数组
队列是一种常用的数据结构,类似于栈,但采用先进先出(FIFO)的原则。生活中常见的排队场景就是队列的应用实例。在数据结构中,队列通常用数组实现,包括入队(队尾插入元素)和出队(队头移除元素)两种基本操作。本文介绍了如何用数组实现队列,包括定义数组长度、维护队头和队尾下标(front 和 tail),并通过取模运算解决下标越界问题。此外,还讨论了队列的空与满状态判断,以及并发和等待机制的实现。通过示例代码展示了队列的基本操作及优化方法,确保多线程环境下的正确性和高效性。
37 0
手撸MQ消息队列——循环数组
|
3月前
|
消息中间件 存储 缓存
一个用过消息队列的人,竟不知为何要用 MQ?
一个用过消息队列的人,竟不知为何要用 MQ?
155 1
|
4月前
|
消息中间件 开发工具 RocketMQ
消息队列 MQ使用问题之一直连接master失败,是什么原因
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 Prometheus 监控
消息队列 MQ使用问题之如何将旧集群的store目录迁移到新集群
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。