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

rocketmq
69 views
Comments
登录后评论
Sign In