ITPub博客

首页 > 数据库 > 数据库开发技术 > RocketMQ系列一:入门级使用演示

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

原创 数据库开发技术 作者:bainana 时间:2022-07-14 17:43:53 0 删除 编辑

实验简介

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69975905/viewspace-2905837/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-06-02

  • 博文量
    142
  • 访问量
    71672