RocketMQ 是什么?
RocketMQ 是一个低延时、高可靠、可伸缩、易于使用的分布式消息中间件,是由阿⾥巴巴开源的消息中间件(使用 Java 语言编写的),2016年11月,阿里巴巴向 Apache 软件基金会捐赠了 RlocketMQ,2017年9月,Apache 宣布 RocketMQ 孵化成为 Apache 顶级项目(TLP)成为国内首个互联网中间件在 Apache 上的顶级项目,RocketMQ 具有高吞吐、低延迟、海量消息堆积等优点,同时提供顺序消息、事务消息、定时消息、消息重试等功能,非常适合在电商、金融等领域使用。
什么是消息队列?
消息队列是一种用于在分布式系统中进行通信的技术,它是一种存储和转发消息的中间件,可以用于将应用程序之间的通信解耦,从而实现高效的异步通信,消息队列允许发送者将消息发送到队列中,而接收者则可以从队列中获取消息并进行处理,这种方式可以帮助系统实现高可用性、高性能、松耦合和可伸缩性,消息队列通常包括生产者(发送消息的应用程序)、消费者(接收消息的应用程序)和队列(存储消息的缓冲区),常见的消息队列有 Kafka、RocketMQ、RabbitMQ、Redis 等。
消息队列的使用场景
消息队列在项目中的使用场景主要用于,异步、削峰、解耦。
- 异步:异步处理,异步调用,比如用户注册成功后发送注册成功的短信,就可以使用 MQ 异步来发送。
- 削峰:用于高并发请求场景,消除高并发场景的峰值流量,让请求在 MQ 中排队执行。
- 解耦:服务解耦,服务与服务之间的 RPC 调用是同步的,调用方必须等待服务提供方响应结果后才能继续执行业务,使用 MQ 后服务间的通讯是异步的,服务之间没有直接调用关系,让服务解耦了。
RocketMQ 的核心概念?
- Producer:消息生产者,一般是业务系统来承担这个角色,生产者会把业务系统产生的消息发送到 Broker 服务器。
- Broke