流动链接
试验简介
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/tmpcd /tiger/tmp
2.2 克隆代码
git clone --branch release-4.9.3 https://github.com/apache/rocketmq.git
2.3 进入源码根目录:
cd rocketmq
3. 编译和打包源码
编译打包胜利后, 咱们执行:
cd distribution/targetls -l
二、如何部署一个简略的RocketMQ集群
(本教程将演示如何利用编译后果,部署一个1Namesrv + 1Broker的RocketMQ集群)
1. 找到上一章节的编译打包后果
cd /tiger/tmp/rocketmq/distribution/target/ls -l
2. 装置Namesrv, Broker
- 创立部署长期目录 (已创立则疏忽)
mkdir -p /tiger/rocketmq/namesrv1mkdir -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/namesrv1cp -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/namesrv1vim 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/namesrv1nohup sh bin/mqnamesrv &
- 启动broker
cd /tiger/rocketmq/broker1nohup 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.gitcd 01-java-demos/
2. 打包,执行代码demo
找到以后试验环境的公网ip,替换mvn exec:java命令中的namesrv ip地址后,再执行命令, 能够看到失常生产和生产输入
mvn clean packagemvn 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.gitcd 02-spring-demos/
2. 打包,执行代码demo
找到以后试验环境的公网ip,替换mvn exec:java命令中的namesrv ip地址后,再执行命令, 能够看到失常生产和生产输入
mvn clean packagemvn 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.gitcd 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.rpmsudo 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.gitcd 04-python-demo
3. 执行生产者demo代码
找到以后试验环境的公网ip,启动命令增加正确的namesrv地址,能够看到失常生产和生产输入
cd src// 执行生产者demopython producer.py xxx.xxx.xxx.xxx:9876// 执行消费者demopython 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.rpmsudo 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.gitcd 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如下: