RocketMQ安装部署及简介



一、 部署


1、 依赖的环境:


1.1、 Jdk 1.8


1.2、 Maven 3.6


1.3、 Git


2、 安装目录:/usr/local/mq,包括服务端rocketmq-all-4.4.0和客户端rocketmq-externals


3、 RocketMq的bin目录/usr/local/mq/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/bin


4、 部署的服务器IP:10.88.201.122


5、 部署步骤:


5.1、下载https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.4.0/rocketmq-all-4.4.0-source-release.zip和https://github.com/apache/rocketmq-externals(可用git clone方式)


5.2、unzip rocketmq-all-4.4.0-source-release.zip和


unzip rocketmq-externals-master.zip到mq目录


5.3、cd rocketmq-all-4.2.0/ ;mvn -Prelease-all -DskipTests clean install –U,效果如下:


rocketmq架构搭建 rocketmq部署方案_rocketmq架构搭建


5.4、安装客户端。cd /usr/local/mq/rocketmq-externals/rocketmq-console;mvn clean package -Dmaven.test.skip=true。成功如下:

需要保证安装的客户端和服务端版本一致,比如都为4.4.0,不是编译会报jar报找不到错误,如:Could not find artifact io.netty:netty-tcnative:jar:linux-x86_32:1.1.33.Fork22

二、 RocketMq介绍
1、 组成部分
Producer:
消息生产者,生产者的作用就是将消息发送到 MQ,生产者本身既可以产生消息,如读取文本信息等。也可以对外提供接口,由外部应用来调用接口,再由生产者将收到的消息发送到 MQ。
Consumer:
消息消费者,简单来说,消费 MQ 上的消息的应用程序就是消费者,至于消息是否进行逻辑处理,还是直接存储到数据库等取决于业务需要。
Push Consumer:
Consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦收到消息,Consumer对象立 刻回调Listener接口方法。
Pull Consumer:
Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权由应用控制。
Topic:
Topic 是一种消息的逻辑分类,比如说你有订单类的消息,也有库存类的消息,那么就需要进行分类,一个是订单 Topic 存放订单相关的消息,一个是库存 Topic 存储库存相关的消息。
Message:
Message是消息的载体。一个 Message 必须指定 topic,相当于寄信的地址。Message 还有一个可选的 tag 设置,以便消费端可以基于 tag 进行过滤消息。也可以添加额外的键值对,例如你需要一个业务 key 来查找 broker 上的消息,方便在开发过程中诊断问题。
Tag:
标签可以被认为是对 Topic 进一步细化。一般在相同业务模块中通过引入标签来标记不同用途的消息。
Broker:
Broker 是 RocketMQ 系统的主要角色,其实就是前面一直说的 MQ。Broker 接收来自生产者的消息,储存以及为消费者拉取消息的请求做好准备。
Name Server:
Name Server 为 producer 和 consumer 提供路由信息。
另外,还存在Producer Group和Consumer Group两个分类概念。

2、 RocketMQ架构

rocketmq架构搭建 rocketmq部署方案_apache_02

3、 Linux下的使用
1) 启动nameserver
cd distribution/target/apache-rocketmq/bin; nohup sh mqnamesrv >/usr/local/mq/rocketmqlogs/mqnamesrv.log 2>&1 &或nohup sh mqnamesrv
2) 启动broker
nohup sh mqbroker -n localhost:9876 >/usr/local/mq/rocketmqlogs/broker.log 2>&1 &或者nohup sh mqbroker
3) 测试发送消息
export NAMESRV_ADDR=localhost:9876;
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
4) 接收消息
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
5) 停止broker
sh mqshutdown broker
6) 停止namerserver
sh mqshutdown namesrv
7) 启动客服端
第一种(启动 —当终端断了该服务就会停止):
java -jar rocketmq-console-ng-1.0.0.jar
第二种(后台启动 --当终端断了也不会停止服务):
nohup java -jar rocketmq-console-ng-1.0.0.jar >>/usr/local/mq/rocketmqlogs/log.out 2>&1 &
8) 统一日志查看目录:cd ~/logs/
9) 修改启动的服务端版本:vim /etc/profile; source /etc/profile
10) 启动客户端:cd /usr/local/mq/rocketmq-externals/rocketmq-console/target; java -jar rocketmq-console-ng-1.0.0.jar –server.port=8080
11)启动相关目前简化为脚本在以下路径:/usr/local/mq

三、安装报错
1、java -jar rocketmq-console-ng-1.0.0.jar –server.port=8080启动成功,但是客户端访问加载失败。
分析:本地cmd telnet ip 8080访问不了,但是linux下telnet ip 8080可以,说明防火墙未开。
解决办法:systemctl status firewalld查看防火墙状态为开启,systemctl stop firewalld关闭防火墙,本机访问8080端口可以,客户端打开。
2、mvn编译服务端报Could not find artifact org.apache.rocketmq:rocketmq-tools:jar:4.2.0-SNAPSHOT.
解决办法:保证服务端和客户端版本一致。