关于rocketmq:RocketMQ-系列一入门级使用演示

29次阅读

共计 5264 个字符,预计需要花费 14 分钟才能阅读完成。

流动链接

试验简介

Apache RocketMQ™ 是一个对立的音讯引擎零碎, 也是一个轻量级的数据处理平台.

当你遇到以下相似问题而大刀阔斧时,RocketMQ 能够帮忙你解决:

  • 重试音讯、死信音讯、事物音讯反对
  • 音讯轨迹追踪
  • 音讯过滤
  • IPv6 反对
  • ACL 反对
  • 主、正本主动高牢靠
  • 全面的监控反对
  • 治理平台原生反对
  • Request-Reply 模式反对

本教程会以如何利用源码编译、打包、部署、理论应用 RocketMQ。

试验实操

一、如何下载、编译最新版 RocketMQ

(本教程会以如何利用源码编译并打包 RocketMQ 为例, 演示如何下载、编译任意版本的 RocketMQ.)

1. 装置 git,jdk, maven 等工具 (参考 baidu/google)

  • jdk 装置

    • jdk 下载:https://www.oracle.com/hk/java/technologies/javase/javase8-archive-downloads.html
    • jdk 装置

      • macos:https://juejin.cn/post/6844903878694010893
      • windows:https://www.runoob.com/w3cnote/windows10-java-setup.html
  • maven 装置

    • maven 下载二进制:https://dist.apache.org/repos/dist/release/maven/maven-3/
    • maven 装置 (windows + macos):https://www.runoob.com/maven/maven-setup.html
    • 如果对于国外网站拜访慢,能够配置 maven 国内镜像:https://cloud.tencent.com/developer/article/1452479
  • git 装置 (可选 , 不装置的话间接下载 4.9.3 源代码:https://github.com/apache/rocketmq/releases)

    • 下载地址:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

2. 下载最新 release 代码(这里以 git 为例,如果没有装置 git 间接从 github release 页面下载)

在本人电脑上,进入命令行,抉择一个保留源码的目录, 这里我把源码保留到 /tiger/tmp 为例

2.1 创立代码保留目录(已创立则不操作)并进入代码保留目录:

mkdir -p /tiger/tmp
cd /tiger/tmp

2.2 克隆代码

git clone --branch release-4.9.3 https://github.com/apache/rocketmq.git

2.3 进入源码根目录:

cd rocketmq

3. 编译和打包源码

编译打包胜利后,咱们执行:

cd distribution/target
ls -l

二、如何部署一个简略的 RocketMQ 集群

(本教程将演示如何利用编译后果,部署一个 1Namesrv + 1Broker 的 RocketMQ 集群)

1. 找到上一章节的编译打包后果

cd /tiger/tmp/rocketmq/distribution/target/
ls -l

2. 装置 Namesrv,Broker

  • 创立部署长期目录 (已创立则疏忽)
mkdir -p /tiger/rocketmq/namesrv1
mkdir -p /tiger/rocketmq/broker1
  • 拷贝 rocketmq-4.9.4-SNAPSHOT 外面的内容,别离拷贝到 /tiger/rocketmq/namesrv1, /tiger/rocketmq/broker1,
cp -R /tiger/tmp/rocketmq/distribution/target/rocketmq-4.9.4-SNAPSHOT/rocketmq-4.9.4-SNAPSHOT/* /tiger/rocketmq/namesrv1

cp -R /tiger/tmp/rocketmq/distribution/target/rocketmq-4.9.4-SNAPSHOT/rocketmq-4.9.4-SNAPSHOT/* /tiger/rocketmq/broker1
  • 查看后果如下
cd /tiger/rocketmq/
ls -l

3. 批改日志配置、jvm 配置等其余配置

  • 批改 namesrv 配置

    • 批改 namesrv 日志配置。进入 namesrv 部署根目录, 批改日志配置文件。次要批改点:日志默认存储门路,保留天数,每个日志文件大小等。
cd /tiger/rocketmq/namesrv1
vim conf/logback_namesrv.xml
  • 批改 namesrv JVM 配置。进入 namesrv 部署根目录:
cd /tiger/rocketmq/namesrv1
  • 批改 JVM 配置,参考批改 JAVA_OPT 等如下:
vim bin/runserver.sh
  • 批改 broker 配置。批改点相似 namesrv,只是批改的配置文件不一样。

    • 批改 broker 日志配置(理论部署须要)。进入 broker 部署根目录:
cd /tiger/rocketmq/broker1
  • 编辑日志配置文件:
vim conf/logback_broker.xml
  • 批改 brokerJVM 配置。进入 broker 部署根目录
cd /tiger/rocketmq/broker1
  • 批改 JVM 配置文件
vim bin/runbroker.sh

4. 启动集群并测试发送、生产

  • 启动 namesrv。
cd /tiger/rocketmq/namesrv1
nohup sh bin/mqnamesrv &
  • 启动 broker
cd /tiger/rocketmq/broker1
nohup sh bin/mqbroker -n localhost:9876 &
  • check namesrv 和 broker 过程启动是否失常:
ps -ef | grep rocketmq
  • 发送、生产音讯来验证集群是否失常

    • 设置 namesrv 环境变量:
export NAMESRV_ADDR=localhost:9876
  • 进入 broker 根目录
cd /tiger/rocketmq/broker1
  • 发送音讯
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
  • 发送胜利会打印:
  • 生产音讯
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
  • 生产胜利会打印:

三、如何应用 Java 发送和生产音讯

(本教程将简略演示如何应用纯 java client 发送和生产音讯。)

1. 下载 java 代码 demo

git clone https://github.com/ApacheRocketMQ/01-java-demos.git
cd 01-java-demos/

2. 打包,执行代码 demo

找到以后试验环境的公网 ip,替换 mvn exec:java 命令中的 namesrv ip 地址后,再执行命令,能够看到失常生产和生产输入

mvn clean package

mvn exec:java -Dexec.args="xxx.xxx.xxx.xxx:9876" -Dexec.mainClass="org.apache.rocketmqdemos.Startup" -Dexec.classpathScope=runtime

3. Demo 代码阐明

RocketMQ Java Client 应用的套路分为三个步骤

步骤 1: 创立生产者、消费者实例

步骤 2: 设置实例属性或者参数

步骤 3: 启动

比方生产代码如下

四、如何应用 Spring 接入 RocketMQ

(本教程将演示如何在 spring 框架中应用 RocketMQ 发送、生产音讯。)

1. 下载 RocketMQ Spring 代码 demo

git clone https://github.com/ApacheRocketMQ/02-spring-demos.git
cd 02-spring-demos/

2. 打包,执行代码 demo

找到以后试验环境的公网 ip,替换 mvn exec:java 命令中的 namesrv ip 地址后,再执行命令,能够看到失常生产和生产输入

mvn clean package

mvn exec:java -Dexec.args="xxx.xxx.xxx.xxx:9876" -Dexec.mainClass="org.apache.rocketmqdemos.Startup" -Dexec.classpathScope=runtime

3. Demo 代码阐明

  • RocketMQ Spring Client 中生产者应用的套路分为两个步骤

步骤 1: 创立 RocetMQ 客户端模板对象: RocketMQTemplate, 并且注入 namesrv 等参数。

步骤 2: 调用 RocketMQTemplate 实例的办法即可。

比方注入生产者代码如下

  • RocketMQ Spring Client 中消费者只须要一步就能够间接应用

继承 RocketMQListener 类,实现 onMessage() 办法即可,demo 代码如下:

五、如何应用 Golang 接入 RocketMQ

(本教程将演示如何应用 golang 发送、生产音讯。)

1. 下载 RocketMQ Golang 代码 demo
git clone https://github.com/ApacheRocketMQ/03-golang-demo.git
cd 03-golang-demo/

2. 打包,执行代码 demo

找到以后试验环境的公网 ip,启动命令增加正确的 namesrv 地址,能够看到失常生产和生产输入

go build

./main xxx.xxx.xxx.xxx:9876

3. Demo 代码阐明

RocketMQ Golang Client 中生产者、消费者应用的套路和 Java client 十分相似,只是生产者、消费者属性是初始化的时候间接设置。

六、如何应用 Python 接入 RocketMQ

(本教程将演示如何应用 python 发送、生产音讯。)

装置 python 相干环境 

1.1 python2.7 试验环境装置

1.2 装置 cpp 动静库

 wget https://github.com/apache/rocketmq-client-cpp/releases/download/2.0.0/rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm
sudo rpm -ivh rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm

1.3 装置 python 客户端

pip install rocketmq-client-python

2. 下载 RocketMQ Golang 代码 demo

git clone https://github.com/ApacheRocketMQ/04-python-demo.git
cd 04-python-demo

3. 执行生产者 demo 代码

找到以后试验环境的公网 ip,启动命令增加正确的 namesrv 地址,能够看到失常生产和生产输入

cd src

// 执行生产者 demo
python producer.py xxx.xxx.xxx.xxx:9876

// 执行消费者 demo
python consumer.py xxx.xxx.xxx.xxx:9876

3. Demo 代码阐明

RocketMQ Python Client 中生产者、消费者应用的套路和 Java client 十分相似,只是生产者、消费者属性是初始化的时候间接设置。

生产者代码 demo 如下:

七、如何应用 C ++ 接入 RocketMQ

(本教程将演示如何应用 C ++ 发送、生产音讯。)

装置 cpp 动静库以及 gcc 相干环境 

1.1 装置 g ++,gcc 等

yum install gcc gcc-c++ make -y 

1.2 装置 cpp 动静库

 wget https://github.com/apache/rocketmq-client-cpp/releases/download/2.0.0/rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm
sudo rpm -ivh rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm

2. 下载 RocketMQ C++ 代码 demo

git clone https://github.com/ApacheRocketMQ/05-cpp-demo.git
cd 05-cpp-demo

3. 执行生产者 demo 代码

找到以后试验环境的公网 ip,启动命令增加正确的 namesrv 地址,能够看到失常生产和生产输入

// 打包
make clean && make

// 执行代码 demo
./main xxx.xxx.xxx.xxx:9876

3. Demo 代码阐明

RocketMQ C++ Client 中生产者、消费者应用的套路和 golang client 十分相似,只是生产者、消费者属性是初始化的时候间接设置。

比方生产者代码 demo 如下:

正文完
 0