写点什么

RocketMQ 系列一:入门级使用演示

  • 2022 年 7 月 15 日
  • 本文字数:3516 字

    阅读完需:约 12 分钟

RocketMQ系列一:入门级使用演示


活动链接

实验简介

Apache RocketMQ™ 是一个统一的消息引擎系统, 也是一个轻量级的数据处理平台.


当你遇到以下类似问题而束手无策时,RocketMQ 可以帮助你解决:


  • 重试消息、死信消息、事物消息支持

  • 消息轨迹追踪

  • 消息过滤

  • IPv6 支持

  • ACL 支持

  • 主、副本自动高可靠

  • 全面的监控支持

  • 管理平台原生支持

  • Request-Reply 模式支持


本教程会以如何利用源码编译、打包、部署、实际使用 RocketMQ。

实验实操

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


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

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

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/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/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 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.gitcd 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.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 如下:



用户头像

还未添加个人签名 2022.07.05 加入

还未添加个人简介

评论

发布
暂无评论
RocketMQ系列一:入门级使用演示_云计算_hum建应用专家_InfoQ写作社区