RocketMQ 简介

2023-07-12 16:29 更新

RocketMQ是阿里开源的一款高性能、高可靠、高实时的分布式消息中间件, 目前已经捐赠给Apache基金会,现在已成为 Apache 顶级孵化项目。  

Rocketmq 解决哪些问题?

  • Publish/Subscribe(发布订阅模式)是消息中间件的最基本功能,RocketMQ也是支持的。
  • 消息优先级RocketMQ 所有消息是持久化消息,因此不可能按照优先级来排序, 这样对于系统的开销会很大,因此RocketMQ是通过定义不同的队列来实现, 例如,可以创建普通队列,优先级高的队列, 将不同优先级发送到不同队列即可。
  • 消息有序消费,就是消息按发送的顺序来消费消息
  • 消息过虑消息过虑支持两种形式
    1. Broker端消息过滤, 优点是减少了对于Consumer无用消息的网络传输; 缺点是增加了Broker的负担,实现相对复杂。
    2. Consumer端消息过滤 这种过滤方式可由应用完全自定义实现,但是缺点是很多无用的消息要传输到Consumer端。
  • 消息持久化
  • 支持分布式事务,目前还除了RocketMQ支持,其它的消息队列没有看到有实现这个功能!

当然 RocketMQ 解决的问题还有很多,这里不再一一介绍!

RocketMQ 逻辑部署结构

RocketMQ 逻辑部署图

如上图所示,RocketMQ的逻辑部署结构有Producer和Consumer两个特点。

  • Producer Group (消息生产者组)用来表示一个发送消息应用,一个Producer Group下包含多个Producer实例, 可以是多台机器,也可以是一台机器的多个进程,或者一个进程的多个Producer对象。 一个Producer Group可以发送多个Topic消息,Producer Group作用如下: 标识一类Producer 可以通过运维工具查询这个发送消息应用下有多个Producer实例发送分布式事务消息时, 如果Producer中途意外宕机,Broker会主动回调Producer Group内的任意一台机器来确认事务状态。
  • Consumer Group (消息消费者级)用来表示一个消费消息应用,一个Consumer Group下包含多个Consumer实例, 可以是多台机器,也可以是多个进程,或者是一个进程的多个Consumer对象。 一个Consumer Group下的多个Consumer以均摊方式消费消息, 如果设置为广播方式,那么这个Consumer Group下的每个实例都消费全量数据。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号