RocketMQ介绍与安装

心不动则不痛 提交于 2020-01-20 01:25:56

1.RocketMQ简介

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

特点:

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

概念:

  • 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://rocketmq.apache.org/
学习资源:

  • http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/
  • https://www.jianshu.com/p/453c6e7ff81c

2.环境准备

系统环境:Centos7 x64

JDK:jdk-8u201-linux-x64

Maven:3.2.x以上的版本均可

在这里就不讲解jdk和maven在linux的安装教程,可以自行百度

3. 安装RocketMQ

下载rocketmq

访问网址http://rocketmq.apache.org/docs/quick-start/ 如下图:
在这里插入图片描述
我们下载编译好的,这样无需自己再编译了,省去很多时间。点击上图红色框的链接。

然后就进入网址:http://rocketmq.apache.org/release_notes/release-notes-4.6.0/。下载Binary版本的rocketmq,如下图:
在这里插入图片描述

我写这篇笔记的时候,播主使用的是4.4.0版本的,最新版本为 rocketmq-all-4.6.0,我们选择编译好的zip包,即上图中红色框框标记的,点击后进入真正的下载页面:
在这里插入图片描述
随便选择一个即可,进行下载。下载完拷贝到centos的/usr/local/software目录下

安装unzip

yum -y install unzip

解压安装包并重命名

unzip rocketmq-all-4.4.0-source-release.zip
mv rocketmq-all-4.4.0 rocketmq

在这里插入图片描述

编译安装

进入rocketmq目录

cd rocketmq

编译安装,初次安装需要安装很多依赖包,需要等一会时间

mvn -Prelease-all -DskipTests clean install -U

在这里插入图片描述

启动Name Server

cd distribution/target/apache-rocketmq/
sh bin/mqnamesrv &  或者 nohup sh bin/mqnamesrv & 推荐nohub守护进程方式启动

如下图所示启动成功
在这里插入图片描述

nohub守护进程方式启动nameserver时查看日志 tail -f nohub.out(结尾:
The Name Server boot success. serializeType=JSON)表示启动成功

启动Name Server时有可能会出现如下问题,原因是因为Rocketmq配置的默认启动内存大于系统内存

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(0x00000005ec800000, 4294967296, 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 4294967296 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/software/rocketmq/distribution/target/apache-rocketmq/hs_err_pid59779.log

解决如下:
编辑runserver.sh文件,修改默认内存,设置小于系统内存即可

vim bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

启动Broker

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

sh bin/mqbroker -n localhost:9876 或 nohup sh bin/mqbroker -n localhost:9876 &

如下图所示启动成功
在这里插入图片描述
启动成功之后改为nohup守护进程方式重新启动。

启动Broker时有可能会出现以下问题,原因也是内存不足

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 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 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/software/rocketmq/distribution/target/apache-rocketmq/hs_err_pid60100.log

解决如下:
编辑runbroker.sh 修改JAVA_OPT

vim bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g"

关闭Nameserver和Broker

sh bin/mqshutdown broker
sh bin/mqshutdown namesrv

设置环境变量

vi /etc/profile

将下面的配置添加到文件最底部

export PATH=$PATH:/usr/local/software/rocketmq/distribution/target/apache-rocketmq/bin

export NAMESRV_ADDR=localhost:9876

保存,并退出。

更新profile文件

source /etc/profile

说明:export NAMESRV_ADDR=localhost:9876是NAMESRV_ADDR环境变量
再重启nameserver和broker

4. 安装RocketMQ控制台

下载rocket-console

可视化

在git上下载rocket-console

地址:https://github.com/apache/rocketmq-externals

在这里插入图片描述

上传并解压

unzip rocketmq-externals-master.zip

安装编译

进入rocketmq-console

cd rocketmq-externals-master
cd rocketmq-console

务必修改下面两个,再进行打包

  1. 修改pom.xml版本号(官方bug)
    将<rocketmq.version>4.4.0-SNAPSHOT</rocketmq.version>的SNAPSHOT去掉
    在这里插入图片描述
  2. 修改application.xml里面的nameserver地址
cd src/main/resources/
vim application.properties

添加nameserver的地址
在这里插入图片描述

再回到rocketmq-console 目录进行打包编译

mvn clean package -Dmaven.test.skip=true

在这里插入图片描述
编译需要10多分钟的时间,请耐心等待

启动jar包

编译完成进入target目录启动jar包

正常启动 java -jar rocketmq-console-ng-1.0.0.jar
守护进程方式启动 nohub java -jar rocketmq-console-ng-1.0.0.jar &

访问控制台

在浏览器输入服务器ip:8080,访问rocketmq控制台

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