消息中间件-RocketMQ技术(二)

简介: 消息中间件-RocketMQ技术(二)

一、RocketMQ的设计目标

1、架构模式

RocketMQ是采用发布订阅模式,参与的组件:消息发送者,消息存储,消息消费者,路由发现。

2、顺序消息

在RocketMQ中主要指的是局部顺序,队列内是有顺序的。消费消息的顺序和存储到队列的顺序是一致的。

3、消息过滤

在消息消费时,消费者可以对同一主题下的消息按照规则只消费自己感兴趣的消息。支持在服务端过滤(Broker将消费者感兴趣的消息发给消费者)和消费端的消息过滤(缺点:有很多无用的消息会从Broker传输到消费端)的机制。

4、消息存储

消息中间件的核心功能就是消息存储,考量维度:消息堆积能力与消息存储性能。追求消息存储的高性能引入内存映射机制。所有主题的消息顺序存储在同一个文件中。同时为了避免消息无限制的累积,引入了过期机制和空间报警机制。

5、消息的可靠性

通常的可靠性表现在如下的几个场景下:

a、Broker正常关机

b、Broker异常宕机

c、操作系统宕机

d、机器断电,但是能立即恢复供电的情况

e、机器无法开机

f、磁盘设备损坏

情况a-d的RocketMQ在同步刷盘机制下可以保证消息不丢失。在异步刷盘模式下,情况a不会丢失,情况b-d会丢失少量消息。

情况e,f属于单点故障,一旦发生,该节点上的消息全部消失。如果开启了异步复制的话,RocketMQ能保证只会丢失少量数据。后续版本的RocketMQ将会引入多副本机制。

6、消费低延时

在不发生消息堆积时,以长轮询的方式实现准实时的消息推送模式。

7、确保消息被消费一次

ACK:代表消息的确认机制。但是ACK可能会丢失,所以这时消费者就重复消费消息了。

8、回溯消息

由于业务需要重新消费消息,RocketMQ支持时间回溯消息,向前和向后都是可以的,单位精确到毫秒。

9、消息堆积

RocketMQ的特点是异步解耦,而且削峰的能力,所以会有消息的堆积。而且消息不是永久的存储到消息服务器里,提供了过期的机制,默认是3天。

10、定时消息

定时消息是指消息发送到Broker中,不会马上被消费掉。要到特定的时间点才会被消费。如果要定时的消费的话,需要对消息进行排序在broker。这样性能必定会降低。所以不支持任意进度的定时消费。而是支持延迟消费。也就是延迟队列。

11、消息重试机制

消息在消费时,发生异常的话,消息中间件是支持重复消息的投递的。


明天见~~

相关实践学习
消息队列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
相关文章
|
30天前
|
消息中间件 弹性计算 Kubernetes
RabbitMQ与容器化技术的集成实践
【8月更文第28天】RabbitMQ 是一个开源消息代理和队列服务器,用于在分布式系统中存储、转发消息。随着微服务架构的普及,容器化技术(如 Docker 和 Kubernetes)成为了部署和管理应用程序的标准方式。本文将探讨如何使用 Docker 和 Kubernetes 在生产环境中部署和管理 RabbitMQ 服务,同时保证高可用性和弹性伸缩能力。
38 3
|
30天前
|
消息中间件 Cloud Native Serverless
RabbitMQ 与云原生技术的融合
【8月更文第28天】随着微服务架构和容器化的普及,云原生技术已成为构建现代应用的标准方式。云原生应用程序利用了诸如容器化、微服务、声明式API等技术,以提高可伸缩性、可靠性和可维护性。消息队列作为服务间通信的关键组件,在云原生环境中扮演着重要角色。本文将探讨如何将RabbitMQ与云原生技术(如Service Mesh和Serverless平台)相结合,并通过具体的代码示例来展示其集成方法。
29 2
|
2天前
|
消息中间件 存储 中间件
消息中间件-RocketMQ技术(一)
消息中间件-RocketMQ技术(一)
|
1月前
|
消息中间件 Java 测试技术
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
这篇文章是关于如何在SpringBoot应用中整合RabbitMQ的消息中间件。内容包括了在SpringBoot项目中添加RabbitMQ的依赖、配置文件设置、启动类注解,以及如何通过单元测试来创建交换器、队列、绑定,并发送和接收消息。文章还介绍了如何配置消息转换器以支持对象的序列化和反序列化,以及如何使用注解`@RabbitListener`来接收消息。
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
|
1月前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
1月前
|
消息中间件 存储 网络协议
消息中间件RabbitMQ---概述和概念 【一】
该文章提供了对消息中间件RabbitMQ的全面概述,包括其核心概念、工作原理以及与AMQP和JMS的关系。
消息中间件RabbitMQ---概述和概念 【一】
|
2月前
|
消息中间件 缓存 IDE
MetaQ/RocketMQ 原理问题之消息队列中间件的问题如何解决
MetaQ/RocketMQ 原理问题之消息队列中间件的问题如何解决
|
2月前
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
2月前
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4天前
|
消息中间件 运维 监控
云消息队列RabbitMQ实践解决方案评测报告
本报告旨在对《云消息队列RabbitMQ实践》解决方案进行综合评测。通过对该方案的原理理解、部署体验、设计验证以及实际应用价值等方面进行全面分析,为用户提供详尽的反馈与建议。
34 15