Java
安装
cd /opt/tools/tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt/soft/vi /etc/profile## 在末尾加入如下三行配置## 注意:请不要换行,请不要换行,请不要换行,请不要换行,请不要换行,请不要换行export JAVA_HOME=/opt/soft/jdk1.8.0_211export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin## 保存修改后,退出## 让配置生效source /etc/profile## 验证java -version## 出现以下内容说明安装成功java version "1.8.0_211"Java(TM) SE Runtime Environment (build 1.8.0_211-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
Maven
安装
cd /opt/soft/
tar -zxvf apache-maven-3.8.1-bin.tar.gz
vi /etc/profile
## 在末尾加入如下三行配置
## 注意:请不要换行,请不要换行,请不要换行,请不要换行,请不要换行,请不要换行
export PATH=$PATH:/opt/soft/maven/apache-maven-3.8.1/bin
## 保存修改后,退出
## 让配置生效
source /etc/profile
## 验证
mvn --version
## 出现以下内容说明安装成功
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /opt/soft/maven/apache-maven-3.8.1
Java version: 1.8.0_261, vendor: Oracle Corporation, runtime: /usr/java/java8/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
阿里云镜像
修改 /opt/soft/maven/apache-maven-3.8.1/conf/settings.xml文件
# jar包存放位置
<localRepository>/opt/soft/maven/apache-maven-3.8.1/repos</localRepository>
# 阿里镜像
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
单机环境搭建
项目构建
tar -zxvf rocketmq-rocketmq-all-4.9.0.tar.gz
cd rocketmq-all-4.9.0/
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/rocketmq-4.9.0/rocketmq-4.9.0/bin
环境变量
# 编辑profile 并重新加载
vi /etc/profile
# 加入如下代码:
export PATH=$PATH:/opt/soft/rocketmq/rocketmq-rocketmq-all-4.9.0/distribution/target/rocketmq-4.9.0/rocketmq-4.9.0/bin
# 保存后,重新加载
source /etc/profile
启动 NameServer
cd /opt/soft/rocketmq/rocketmq-rocketmq-all-4.9.0/distribution/target/rocketmq-4.9.0/rocketmq-4.9.0
nohup sh bin/mqnamesrv &
tail -f ~/logs/rocketmqlogs/namesrv.log
启动 Broker
nohup sh bin/mqbroker -n localhost:9876 &
tail -f ~/logs/rocketmqlogs/broker.log
测试发送和接收消息
生产者发送消息
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
消费者消费消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
关闭服务
sh mqshutdown broker
sh mqshutdown namesrv
多Master模式
一个集群无Slave,全是Master,例如2个Master或者3个Master,这种模式的优缺点如下:
- 优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;
- 缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。
启动 NameServer
nohup sh mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log启动Master1
在机器A,启动第一个Master,例如NameServer的IP为:192.168.1.1
nohup sh bin/mqbroker -n 192.168.1.1:9876 -c ./conf/2m-noslave/broker-a.properties &在机器B,启动第二个Master,例如NameServer的IP为:192.168.1.1
nohup sh bin/mqbroker -n 192.168.1.1:9876 -c ./conf/2m-noslave/broker-b.properties &…(其他Master节点)
如上启动命令是在单个NameServer情况下使用的。对于多个NameServer的集群,Broker启动命令中
-n后面的地址列表用分号隔开即可,例如192.168.1.1:9876;192.161.2:9876。多Master多Slave模式-异步复制
每个Master配置一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:
- 优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;
- 缺点:Master宕机,磁盘损坏情况下会丢失少量消息。
启动NameServer
nohup sh mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log启动Broker集群
```shell在机器A,启动第一个Master,例如NameServer的IP为:192.168.1.1
$ nohup sh mqbroker -n 192.168.1.1:9876 -c ./conf/2m-2s-async/broker-a.properties &
在机器B,启动第二个Master,例如NameServer的IP为:192.168.1.1
$ nohup sh mqbroker -n 192.168.1.1:9876 -c ./conf/2m-2s-async/broker-b.properties &
在机器C,启动第一个Slave,例如NameServer的IP为:192.168.1.1
$ nohup sh mqbroker -n 192.168.1.1:9876 -c ./conf/2m-2s-async/broker-a-s.properties &
在机器D,启动第二个Slave,例如NameServer的IP为:192.168.1.1
$ nohup sh mqbroker -n 192.168.1.1:9876 -c ./conf/2m-2s-async/broker-b-s.properties &
<a name="f95e3b33"></a>
## rocketmq-console
```shell
tar -zxvf rocketmq-externals-rocketmq-console-1.0.0.tar.gz
cd rocketmq-externals-rocketmq-console-1.0.0/
mvn clean package -Dmaven.test.skip=true
cd /opt/soft/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/target
nohup java -jar rocketmq-console-ng-1.0.0.jar &
