RocketMQ 4.x 介绍以及安装

Apache RocketMQ 是阿里开源的一款高性能、高吞吐量的分布式消息中间件.

官网:http://rocketmq.apache.org/

特点

  • 支持 Broker 和 Consumer 端消息过滤
  • 支持发布订阅模型,和点对点,
  • 支持拉 pull 和推 push 两种消息模式
  • 单一队列百万消息、亿级消息堆积
  • 支持单 master 节点,多 master 节点,多 master 多 slave 节点
  • 任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式
  • 消息失败重试机制、支持特定 level 的定时消息
  • 新版本底层采用 Netty
  • 4.3.x 支持分布式事务
  • 适合金融类业务,高可用性跟踪和审计功能。

概念

  • Producer:消息生产者
  • Producer Group:消息生产者组,发送同类消息的一个消息生产组
  • Consumer:消费者
  • Consumer Group:消费同类消息的多个实例
  • Tag:标签,子主题(二级分类)对 topic 的进一步细化,用于区分同一个主题下的不同业务的消息
  • Topic:主题, 如订单类消息,queue 是消息的物理管理单位,而 topic 是逻辑管理单位。一个 topic 下可以有多个 queue,默认自动创建是4个,手动创建是8个
  • Message:消息,每个 message 必须指定一个 topic
  • Broker:MQ 程序,接收生产的消息,提供给消费者消费的程序
  • Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比 zookeeper 更轻量)
  • Offset: 偏移量,可以理解为消息进度
  • commit log: 消息存储会写在 Commit log 文件里面

学习资源:http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/

 

安装前提条件(推荐) 64bit OS,Linux/Unix/Mac  64bit(Windows 不兼容),JDK 1.8+;

快速开始 http://rocketmq.apache.org/docs/quick-start/

这里以 Centos 7.2 虚拟机为例

安装 JDK1.8

第一步:获取 JDK1.8 安装包

地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

第二步:解压安装包

新建一个文件夹,用来放置安装包(当然可以使用任意文件夹)进到目录 /usr/local/software 

解压:tar -zxvf jdk-8u201-linux-x64.tar.gz
重命名:mv jdk1.8.0_201 jdk8

注意:解压后生成的文件夹是: jdk1.8.0_201,我这里重命名的目的是为了方便自己看,其实不重命名也无所谓

第三步:配置环境变量

vim /etc/profile

加入以下配置

export JAVA_HOME=/usr/local/software/jdk8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH

使用 source /etc/profile 让配置立刻生效

注意:JAVA_HOME 以自己实际情况为准。我这里的是:/usr/local/software/jdk8

 

安装 Maven

第一步:获取安装包

地址:http://maven.apache.org/download.cgi

第二步:解压安装包

解压:tar -zxvf apache-maven-3.6.0-bin.tar.gz
重命名: mv apache-maven-3.6.0 maven

第三步:配置环境变量

vim /etc/profile

加入以下配置

export PATH=/usr/local/software/maven/bin:$PATH

使用 source /etc/profile 让配置立刻生效

 

安装 RocketMQ4.X

第一步:获取安装包

地址:https://mvnrepository.com/search?q=mybatis

第二步:解压编译安装包

unzip rocketmq-all-4.4.0-source-release.zip
cd rocketmq-all-4.4.0/
mvn -Prelease-all -DskipTests clean install -U

注意:我这里是重命名过的文件夹,原本的文件夹名称是:rocketmq-all-4.4.0

第三步:启动

启动 nameServer

cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
nohup sh bin/mqnamesrv &

查看日志 tail -f nohup.out (结尾:The Name Server boot success. serializeType=JSON 表示启动成功)

启动 broker (-n指定nameserver地址,nameserver服务端口为9876,broker默认端口10911)

cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
nohup sh bin/mqbroker -n localhost:9876 &

关闭 nameserver broker 执行的命令

cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
sh bin/mqshutdown broker
sh bin/mqshutdown namesrv

使用 jps 查看进程

第四步:测试

cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
#设置名称服务地址
export NAMESRV_ADDR=localhost:9876
#投递消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
​
SendResult [sendStatus=SEND_OK, msgId= ...
​
#消费消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
​
ConsumeMessageThread_%d Receive New Messages: [MessageExt...

 

安装 RocketMQ 控制台

第一步:获取源码包

第二步:解压源码包

第三步:修改配置文件和 pom 文件

 

原本这里的版本是快照版本,这里修改为正式版本(也就是把快照后缀删除即可)

 

这里修改为实际内网地址,集群部署的话,多个地址用英文分号分隔

第四步:进入pom文件所在目录,使用 mvn clean package -Dmaven.test.skip=true 命令打包

第五步:进入 target 目录 ,使用命令启动: java -jar rocketmq-console-ng-1.0.0.jar

守护进程方式启动命令: nohup java -jar rocketmq-console-ng-1.0.0.jar &

 

常见问题

  • NameServer内存不够怎么处理

    • 找到 runserver.sh 修改 JAVA_OPT

      报错问题如下
      [root@iZwz94sw188z3yfl7lpmmsZ apache-rocketmq]# sh bin/mqnamesrv
      Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
      Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
      Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006ec800000, 2147483648, 0) failed; error='Cannot allocate memory' (errno=12)
      #
      # There is insufficient memory for the Java Runtime Environment to continue.
      # Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory.
      # An error report file with more information is saved as:
      # /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/hs_err_pid8993.log
      
      解决如下 编辑 bin/runserver.sh:
      JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

  • Broker内存不足

    • 找到 runbroker.sh 修改 JAVA_OPT

    • JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"

注意:runserver.sh 和 runbroker.sh 这两个文件在目录 /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/bin 里

 

posted @ 2020-02-16 21:38  认真对待世界的小白  阅读(946)  评论(0编辑  收藏  举报