搞懂什么是RocketMQ

在这里插入图片描述

前言

我们在上一篇中给大家介绍了系统中引入消息队列的必要性,也了解了一些消息队列的基础知识,我们也提到了一些比较常见的问题,并且简单聊了下,那我们在实际的开发中,使用频率最高的消息中间件是哪些呢?
在这里插入图片描述

接下来我们介绍RocketMQ,前身是MetaQ,现在叫RocketMQ,阿里这是希望它像中国的嫦娥一样上天可能,还是挺不错的名字

RocketMQ的项目架构

由于RocketMQ是Java开发的,我们也便于读懂源码以及解决问题,先来简单看下它的项目结构:

rocketmq-broker:接受生产者发来的消息并存储(通过调用rocketmq-store),消费者从这里取得消息

rocketmq-client:提供发送、接受消息的客户端API。

rocketmq-namesrv:NameServer,类似于Zookeeper,这里保存着消息的TopicName,队列等运行时的元信息。

rocketmq-common:通用的一些类,方法,数据结构等。

rocketmq-remoting:基于Netty4的client/server + fastjson序列化 + 自定义二进制协议。

rocketmq-store:消息、索引存储等。

rocketmq-filtersrv:消息过滤器Server,需要注意的是,要实现这种过滤,需要上传代码到MQ!(一般而言,我们利用Tag足以满足大部分的过滤需求,如果更灵活更复杂的过滤需求,可以考虑filtersrv组件)。

rocketmq-tools:命令行工具。

项目源码地址:https://github.com/apache/rocketmq

核心组件

其实它内部主要是四大核心组成部分:NameServer、Broker、Producer以及Consumer四部分

NameServer:主要是对元数据的管理,包括Topic和路由信息的管理,底层由netty实现,是一个提供路由管理、路由注册和发现的无状态节点,类似于ZooKeeper

Broker:消息中转站,负责收发消息、持久化消息

Producer:消息的生产者,一般由业务系统来产生消息供消费者消费

Consumer:消息的消费者,一般由业务系统来异步消费消息

理解其中的核心概念

在这里插入图片描述

Message:Message就是属于要传输的消息,一条消息必须要一个主题topic,等于是通道地址。

发送方根据topic发送消息,消费方根据topic来选择相应的消费逻辑。

一条消息也可以选择一个Tag标签,理解成topic的子级别,Tag可以不设置,但是topic必须设置,Tag一般用于更方便的查找消息。

Topic:Topic也就是上面说的消息的主题,属于消息的第一级别类型,为什么说是第一级别呢,因为还有第二级别Tag。

一个消息必须有且只能有一个Topic,Topic和生产者、消费者的关系是解耦合的,可以由多个生产者向同一个Topic发送消息,多个消费者也可以同时消费同一个Topic的消息,也就是被多个消费者订阅。

Tag:Tag标签,可以看做子主题属于消息的第二级别的类型,用于为消息提供更多额外的灵活的配置。

即Topic是一级分类,Tag是二级分类࿰

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值