探究RocketMQ Push消费方式的实现原理

本文详细介绍了RocketMQ Push消费方式的实现原理,包括轮询与长轮询的机制,以及Push消费方式的源码探究,揭示了RocketMQ如何通过长轮询实现Push效果,保证消息实时性和系统性能。
摘要由CSDN通过智能技术生成

前言

RocketMQ 是阿里巴巴旗下一款开源的 MQ 框架,经历过双十一考验,由 Java 编程语言实现,有非常完整的生态系统。RocketMQ 作为一款纯 Java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。

RocketMQ 主要由以下四个部分组成:

23a7e245e01fb62fdbc86b1e91797e7c.jpeg

核心概念简述

  • NameServer:可以理解为是一个注册中心,主要是用来保存 Topic 路由信息,管理 Broker,支持 Broker 的动态注册和发现,保存 Topic 和 Borker 之间的关系。在 NameServer 的集群中,NameServer 与 NameServer 之间是没有任何通信的。
  • Broker:核心的一个角色,主要是负责消息的存储、查询消费,在启动时会向 NameServer 进行注册。Broker 实例可以有很多个,相同的 BrokerName 可以称为一个 Broker 组,每个 Broker 组只保存一部分消息。
  • Topic:可以理解为一个消息的集合的名字,一个 Topic 可以分布在不同的 Broker 组下。
  • 队列(Queue) :一个 Topic 可以有很多队列,默认是一个 Topic 在同一个 Broker 组中是4个。如果一个Topic 在2个 Broker 组中,那么就有可能有8个队列。
  • 生产者:生产消息的一方就是生产者。
  • 生产者组:一个生产者组可以有很多生产者,只需要在创建生产者的时候指定生产者组,那么这个生产者就在那个生产者组。
  • 消费者:用来消费生产者消息的一方。
  • 消费者组:跟生产者一样,每个消费者都有所在的消费者组,一个消费者组可以有很多的消费者,不同的消费者组消费消息是互不影响的。
MQ 的消费方式

RocketMQ 消费方式就是指消费者如何从 MQ 中获取到消息,分为两种方式,Push(推方式)和 Pull(拉方式)。

Push(推方式)

Push,就是推消息。当 Broker 收到生产者的消息时,会主动的将消息推送给消费者端进行消费,这种消费模式就叫 Push,也就是 MQ 将消息推给到消费者的意思。

8de771bfb505756e14c69100728ef16b.jpeg

Push(推方式)模式的优势就是响应速度快,消息的实时性比较高,一旦 Brocker 收到消息后,就能立马将消息推送给消费者,消费者也就能立马对收到的消息进行消费。

但是这种 Push 的消费模式存在一定的缺点,就是一旦消息量比较大时,对消费者性能要求较高,由于消

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值