033. RocketMQ 入门

依然范特西╮ 提交于 2020-08-11 07:50:49

1. 简介


1. RocketMQ 是什么?

  • RocketMQ 是由阿里捐赠给 Apache 的一款分布式、队列模型的开源消息中间件,经历了淘宝双十一的洗礼。

2. RocketMQ 的特性

  • 原生分布式
  • 两种消息拉取
  • 严格消息顺序
  • 特有的分布式协调器
  • 亿级消息堆积
  • 组(Group)

2. RocketMQ 基本概念


概念 描述
Producer 消息生产者,负责生产消息,一般由业务系统负责产生消息。
Consumer 消息消费者,负责消费消息,一般是后台系统负责异步消费。
Push Consumer 封装消息拉取,消费进程和内部。
Pull Consumer 主动拉取消息,应用的消费进程进行初始化。
Producer Group 一类 Producer 的集合名称,这类 Producer 通常发送一类消息,且发送逻辑一致。
Consumer Group 一类 Consumer 的集合名称,这类 Consumer 通常消费一类消息,且消费逻辑一致。
Broker 消息中转角色,负责存储消息,转发消息,这里就是 RocketMQ Server。
Topic 消息的主题,用于定义并在服务端配置,消费者可以按照主题进行订阅,也就是消息分类,通常一个系统一个 Topic。
Message 在生产者、消费者、服务器之间传递的消息,一个 message 必须属于一个 Topic
Namesrv 一个无状态的名称服务,可以集群部署,每一个 broker 启动的时候都会向名称服务器注册,主要是接收 broker 的注册,接收客户端的路由请求并返回路由信息。
Offset 偏移量,消费者拉取消息时需要知道上一次消费到了什么位置,这一次从哪里开始。
Partition 分区,Topic 物理上的分组,一个 Topic 可以分为多个分区,每个分区是一个有序的队列。分区中的每条消息都会分配给一个有序的 ID,也就是偏移量。
Tag 用于对消息进行过滤,理解为 message 的标记,同一业务不同目的的 message 可以用相同的 topic ,但是可以用不同的 tag 来区分。
key 消息的 KEY 字段是为了唯一表示消息的,方便查问题,不是说必须设置,只是说设置为了方便开发和运维定位问题。比如:这个 KEY 可以是订单 ID 等。

3. RocketMQ 安装运行


下载 RocketMQ

wget http://mirror.bit.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-bin-release.zip

解压

unzip -d /usr rocketmq-all-4.6.0-bin-release.zip
mv /usr/rocketmq-all-4.6.0-bin-release /usr/rocketmq

启动 NameServer

nohup sh bin/mqnamesrv > ~/logs/rocketmqlogs/namesrc.log 2>&1 &
  • NameServer 默认 4G,假如启动报错,记得修改该配置。

启动 Broker

nohup sh bin/mqbroker -n localhost:9876 > ~/logs/rocketmqlogs/broker.log 2>&1 &

查看 Broker 列表

bin/mqadmin clusterList -n localhost:9876
  • Broker 默认 8G,假如启动报错,记得修改该配置。

停止 Broker

bin/mqshutdown broker

停止 NameServer

bin/mqshutdown namesrv

发送消息

export NAMESRV_ADDR=localhost:9876
bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

接收消息

bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

4. RocketMQ Java 使用


<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.6.0</version>
</dependency>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!