RocketMQ一站式入门使用
1. 实验环境说明
实验环境
- 体验手册。
a.体验环境的阿里云子账号信息(目前RocketMQ系列实验中没有使用)。
b.实验操作手册。
- 云产品资源。
a.体验环境的阿里云子账号信息(目前RocketMQ系列实验中没有使用)。
b.实验环境使用的云服务器(ECS实例),并挂载弹性IP, 可通过公网在本地访问。弹性IP需要大家记住如何查看到,后续的实验会用到。
- 体验报告。
小伟老师希望大家多多填写,我们多多优化,帮助大家快速方便的通过实验了解RocketMQ。
- 实验环境。
实验室为您提供一个云服务器ECS实例,操作系统为Alibaba Cloud Linux 2.1903 64位版本。
- 实验体验时间。
体验时间一般为一个小时。
- 实验环境功能栏。
功能栏一般包括全屏、切换至Web Terminal、FAQ、热门问题、主题色、钉钉交流群二维码和问题反馈等七个功能。
- 编写实验报告。
填写实验报告,帮助大家快速通过实验了解RocketMQ。
实验帮助
如果您在使用RocketMQ实验时有需要咨询的问题,可以扫描二维码加入钉钉钉钉群。
2. 如何下载、编译最新版RocketMQ源码
本教程会以如何利用源码编译并打包RocketMQ为例, 演示如何下载、编译任意版本的RocketMQ。
1. 安装git,jdk, maven等工具(当前实验环境已经安装完毕,)
说明:当前实验环境已经为您安装好git,jdk, maven等工具,您可忽略此步骤。
- 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)
2. 下载最新release代码。
说明:本实验场景以git为例,如果您使用实验场景以外的资源进行操作时,若没有安装git您可直接从github release页面下载。
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
2.4执行如下命令,查看源码根目录下的文件。
ll
返回结果如下,您可以查看到源码根目录下的文件。
3. 编译和打包源码。
3.1执行如下命令,编译和打包源码。
mvn -Prelease-all -DskipTests clean install -U
请您耐心等待三分钟,返回结果如下,表示编译和打包源码已成功。
3.2执行如下结果,查看编译打包的结果文件。
cd distribution/target ls -l
返回结果如下,您可以查看编译打包的结果文件。
3. 如何部署一个简单的RocketMQ集群
本步骤将指导您如何利用编译的结果文件,部署一个1 Namesrv+1 Broker的RocketMQ集群。
1. 找到上一章节的编译打包的结果文件。
cd /tiger/tmp/rocketmq/distribution/target/ ls -l
2. 安装Namesrv, Broker
2.1执行如下命令,创建部署临时目录。
mkdir -p /tiger/rocketmq/namesrv1 mkdir -p /tiger/rocketmq/broker1
2.2执行如下命令,分别拷贝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
2.3执行如下命令,查看结果如下。
cd /tiger/rocketmq/ ls -l ll namesrv1/ ll broker1/
3. 修改JVM配置。
说明:在本实验环境中,只需要修改JVM配置。若您在生产环境中部署RocketMQ集群,则还需要修改日志配置等配置。
3.1修改namesrv JVM配置。
3.1.1执行如下命令,进入namesrv部署根目录。
cd /tiger/rocketmq/namesrv1
3.1.2执行如下命令,修改JVM配置文件。按i键进入编辑模式,并参考下图修改JAVA_OPT中的部分参数。修改完成后,输入:wq,退出编辑模式,按回车键保存。
vim bin/runserver.sh
3.2修改broker JVM配置。
3.2.1执行如下命令,进入broker部署根目录.
cd /tiger/rocketmq/broker1
3.2.2执行如下命令,修改JVM配置文件。按i键进入编辑模式,并参考下图修改JAVA_OPT中的部分参数。修改完成后,输入:wq,退出编辑模式,按回车键保存。
vim bin/runbroker.sh
4. 启动集群并测试发送、消费。
4.1执行如下命令,启动namesrv。启动完成之后按Ctrl+C键退出。
cd /tiger/rocketmq/namesrv1 nohup sh bin/mqnamesrv &
4.2执行如下命令,启动broker。启动完成之后按Ctrl+C键退出。
cd /tiger/rocketmq/broker1 nohup sh bin/mqbroker -n localhost:9876 &
4.3执行如下命令,查看namesrv和broker进程启动是否正常。
ps -ef | grep rocketmq
5.发送、消费消息来验证集群是否正常。
5.1执行如下命令,设置namesrv环境变量。
export NAMESRV_ADDR=localhost:9876
5.2执行如下命令,进入broker根目录。
cd /tiger/rocketmq/broker1
5.3执行如下命令,发送消息。
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
返回结果如下,发送成功会打印如下内容。
5.4执行如下命令,消费消息.
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
返回结果如下,消费成功会打印如下内容,按Ctrl+C键退出。
4. 如何使用Java发送和消费消息
本步骤将指导您如何使用纯java client发送和消费消息。
当前环境已经安装了一个1 Namesrv+1 Broker的集群,执行如下命令,进入演示代码路径。
cd /data/demos
1.执行如下命令,下载java代码demo。
说明:本实验以为您下载java代码demo,你可直接执行cd 01-java-demos/命令。
git clone https://github.com/ApacheRocketMQ/01-java-demos.git cd 01-java-demos/
2.执行如下命令,打包demo。
mvn clean package
3.将下方mvn exec:java命令中Dexec.args参数的namesrv ip地址替换为实验环境的弹性IP后,再执行该命令,运行代码demo。
mvn exec:java -Dexec.args="xxx.xxx.xxx.xxx:9876" -Dexec.mainClass="org.apache.rocketmqdemos.Startup" -Dexec.classpathScope=runtime
说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。
返回结果如下,您可以看到正常生产和消费输出。
4. Demo代码说明。
RocketMQ Java Client使用分为三个步骤:
步骤1: 创建生产者、消费者实例。
步骤2: 设置实例属性或者参数。
步骤3: 启动。
比如消费代码如下。
如果您想查看全部代码,您可以查看实验本地或者访问Demo代码。
5. 如何使用Spring接入RocketMQ
本步骤将指导您如何在spring框架中使用RocketMQ发送、消费消息。
当前环境已经安装了一个1 Namesrv+1 Broker的集群,执行如下命令,进入演示代码路径。
cd /data/demos
1.执行如下命令,下载RocketMQ Spring代码demo。
git clone https://github.com/ApacheRocketMQ/02-spring-demos.git cd 02-spring-demos/
2. 执行如下命令,打包demo。
mvn clean package
3.将下方mvn exec:java命令中Ddemo.name_srv参数的namesrv ip地址替换为实验环境的弹性IP后,再执行该命令, 运行代码demo。
mvn exec:java -Ddemo.name_srv="xxx.xxx.xxx.xxx:9876" -Dexec.mainClass="org.apache.rocketmqdemos.Startup" -Dexec.classpathScope=runtime
说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。 返回结果如下,您可以看到正常生产和消费输出。按Ctrl+C键可以退出。
4. Demo代码说明
RocketMQ Spring Client中生产者使用分为两个步骤:
步骤1: 创建RocetMQ客户端模板对象: RocketMQTemplate, 并且注入namesrv等参数。
步骤2: 调用RocketMQTemplate实例的方法即可。
比如注入生产者代码如下。
RocketMQ Spring Client中消费者只需要一步就可以直接使用。
继承RocketMQListener类,实现onMessage()方法即可, demo代码如下:
如果您想查看全部代码,您可以可以查看实验本地或者访问Demo代码。
6. 如何使用Golang接入RocketMQ
本步骤将指导您如何使用golang发送、消费消息。
当前环境已经安装了一个1 Namesrv+1 Broker的集群,执行如下命令,进入演示代码路径。
cd /data/demos
1.执行如下命令,下载RocketMQ Golang代码demo.
git clone https://github.com/ApacheRocketMQ/03-golang-demo.git cd 03-golang-demo/
2.执行如下命令,打包demo。
cd main go build
3.将下放命令中namesrv ip地址替换为实验环境的弹性IP后,再执行该命令, 运行代码demo。
./main xxx.xxx.xxx.xxx:9876
说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。
返回结果如下,您可以看到正常生产和消费输出。按Ctrl+C键可以退出。
4. Demo代码说明
RocketMQ Golang Client中生产者、消费者使用的套路和Java client十分相似, 只是生产者、消费者属性是初始化的时候直接设置。
如果您想查看全部代码,您可以可以查看实验本地或者访问Demo代码。
7. 如何使用Python接入RocketMQ
本步骤将指导您如何使用python发送、消费消息。
当前环境已经安装了一个1 Namesrv+1 Broker的RocketMQ集群, 执行如下命令,进入演示代码路径。
cd /data/demos
1.安装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和执行消费者demo的命令中的namesrv ip地址替换为实验环境的弹性IP后,执行该命令。
说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。
cd src // 执行生产者demo python producer.py xxx.xxx.xxx.xxx:9876 // 执行消费者demo python consumer.py xxx.xxx.xxx.xxx:9876
返回结果如下,您可以看到正常生产和消费输出。按Ctrl+C键可以退出。
3. Demo代码说明
RocketMQ Python Client中生产者、消费者使用的套路和Java client十分相似, 只是生产者、消费者属性是初始化的时候直接设置。
生产者代码demo如下:
如果您想查看全部代码,您可以可以查看实验本地或者访问Demo代码。
8. 如何使用C++接入RocketMQ
本步骤将指导您如何使用C++发送、消费消息。
当前环境已经安装了一个1 Namesrv+1 Broker的集群,执行如下命令,进入演示代码路径。
cd /data/demos
1.安装cpp动态库以及gcc相关环境。
说明:实验环境已安装python相关环境, 您可以忽略此步骤。
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的命令中的namesrv ip地址替换为实验环境的弹性IP后,执行该命令。
说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。
// 打包 make clean && make // 执行代码demo ./main xxx.xxx.xxx.xxx:9876
返回结果如下,您可以看到正常生产和消费输出。按Ctrl+C键可以退出。
3. Demo代码说明
RocketMQ C++ Client中生产者、消费者使用的套路和golang client十分相似, 只是生产者、消费者属性是初始化的时候直接设置。
比如生产者代码demo如下:
如果您想查看全部代码,您可以可以查看实验本地或者访问Demo代码
实验链接:https://developer.aliyun.com/adc/scenario/47efb0ab5a9741448e7a3e999336022e