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
在自己电脑上, 进入命令行, 选择一个保存源码的目录,这里我把源码保存到 /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 rocketmq3. 编译和打包源码
编译打包成功后, 我们执行:
cd distribution/target ls -l
二、如何部署一个简单的 RocketMQ 集群
(本教程将演示如何利用编译结果,部署一个 1Namesrv + 1Broker 的 RocketMQ 集群)
1. 找到上一章节的编译打包结果cd /tiger/tmp/rocketmq/distribution/target/ ls -l2. 安装 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 -l3. 修改日志配置、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 代码 demogit 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=runtime3. 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=runtime3. 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:98763. 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-python2. 下载 RocketMQ Golang 代码 demo
git clone https://github.com/ApacheRocketMQ/04-python-demo.git cd 04-python-demo3. 执行生产者 demo 代码
找到当前实验环境的公网 ip,启动命令添加正确的 namesrv 地址,可以看到正常生产和消费输出
cd src // 执行生产者demo python producer.py xxx.xxx.xxx.xxx:9876 // 执行消费者demo python consumer.py xxx.xxx.xxx.xxx:98763. 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.rpm2. 下载 RocketMQ C++ 代码 demo
git clone https://github.com/ApacheRocketMQ/05-cpp-demo.git cd 05-cpp-demo3. 执行生产者 demo 代码
找到当前实验环境的公网 ip,启动命令添加正确的 namesrv 地址,可以看到正常生产和消费输出
// 打包 make clean && make // 执行代码demo ./main xxx.xxx.xxx.xxx:98763. Demo 代码说明
RocketMQ C++ Client 中生产者、消费者使用的套路和 golang client 十分相似, 只是生产者、消费者属性是初始化的时候直接设置。
比如生产者代码 demo 如下:
暑期编程PK赛 得CSDN机械键盘等精美礼品!


