Java

安装

  1. cd /opt/tools/
  2. tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt/soft/
  3. vi /etc/profile
  4. ## 在末尾加入如下三行配置
  5. ## 注意:请不要换行,请不要换行,请不要换行,请不要换行,请不要换行,请不要换行
  6. export JAVA_HOME=/opt/soft/jdk1.8.0_211
  7. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  8. export PATH=$PATH:$JAVA_HOME/bin
  9. ## 保存修改后,退出
  10. ## 让配置生效
  11. source /etc/profile
  12. ## 验证
  13. java -version
  14. ## 出现以下内容说明安装成功
  15. java version "1.8.0_211"
  16. Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
  17. 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

  1. 在机器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 &
    
  2. 在机器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 &