RocketMQ一站式入门使用

简介: 从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。

RocketMQ一站式入门使用


1. 实验环境说明

实验环境

  1. 体验手册。

a.体验环境的阿里云子账号信息(目前RocketMQ系列实验中没有使用)。

b.实验操作手册。

  1. 云产品资源。

a.体验环境的阿里云子账号信息(目前RocketMQ系列实验中没有使用)。

b.实验环境使用的云服务器(ECS实例),并挂载弹性IP, 可通过公网在本地访问。弹性IP需要大家记住如何查看到,后续的实验会用到。

  1. 体验报告。

小伟老师希望大家多多填写,我们多多优化,帮助大家快速方便的通过实验了解RocketMQ。

  1. 实验环境。

实验室为您提供一个云服务器ECS实例,操作系统为Alibaba Cloud Linux 2.1903 64位版本。

  1. 实验体验时间。

体验时间一般为一个小时。

  1. 实验环境功能栏。

功能栏一般包括全屏、切换至Web Terminal、FAQ、热门问题、主题色、钉钉交流群二维码和问题反馈等七个功能。

  1. 编写实验报告。

填写实验报告,帮助大家快速通过实验了解RocketMQ。

实验帮助

如果您在使用RocketMQ实验时有需要咨询的问题,可以扫描二维码加入钉钉钉钉群。


2. 如何下载、编译最新版RocketMQ源码

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

1. 安装git,jdk, maven等工具(当前实验环境已经安装完毕,)

说明:当前实验环境已经为您安装好git,jdk, maven等工具,您可忽略此步骤。

  • jdk安装。
  • maven安装 。

2. 下载最新release代码。

说明:本实验场景以git为例,如果您使用实验场景以外的资源进行操作时,若没有安装git您可直接从github release页面下载。

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

2.4执行如下命令,查看源码根目录下的文件。

ll

返回结果如下,您可以查看到源码根目录下的文件。

3. 编译和打包源码。

3.1执行如下命令,编译和打包源码。

mvn -Prelease-all -DskipTests clean install -U

请您耐心等待三分钟,返回结果如下,表示编译和打包源码已成功。

3.2执行如下结果,查看编译打包的结果文件。

cd distribution/target
ls -l

返回结果如下,您可以查看编译打包的结果文件。


3. 如何部署一个简单的RocketMQ集群

本步骤将指导您如何利用编译的结果文件,部署一个1 Namesrv+1 Broker的RocketMQ集群。

1. 找到上一章节的编译打包的结果文件。

cd /tiger/tmp/rocketmq/distribution/target/
ls -l


2. 安装Namesrv, Broker

2.1执行如下命令,创建部署临时目录。

mkdir -p /tiger/rocketmq/namesrv1
mkdir -p /tiger/rocketmq/broker1

2.2执行如下命令,分别拷贝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

2.3执行如下命令,查看结果如下。

cd /tiger/rocketmq/
ls -l
ll namesrv1/
ll broker1/

3. 修改JVM配置。

说明:在本实验环境中,只需要修改JVM配置。若您在生产环境中部署RocketMQ集群,则还需要修改日志配置等配置

3.1修改namesrv JVM配置。

3.1.1执行如下命令,进入namesrv部署根目录。

cd /tiger/rocketmq/namesrv1

3.1.2执行如下命令,修改JVM配置文件。按i键进入编辑模式,并参考下图修改JAVA_OPT中的部分参数。修改完成后,输入:wq,退出编辑模式,按回车键保存。

vim bin/runserver.sh


3.2修改broker JVM配置。

3.2.1执行如下命令,进入broker部署根目录.

cd /tiger/rocketmq/broker1

3.2.2执行如下命令,修改JVM配置文件。按i键进入编辑模式,并参考下图修改JAVA_OPT中的部分参数。修改完成后,输入:wq,退出编辑模式,按回车键保存。

vim bin/runbroker.sh


4. 启动集群并测试发送、消费。

4.1执行如下命令,启动namesrv。启动完成之后按Ctrl+C键退出。

cd /tiger/rocketmq/namesrv1
nohup sh bin/mqnamesrv &

4.2执行如下命令,启动broker。启动完成之后按Ctrl+C键退出。

cd /tiger/rocketmq/broker1
nohup sh bin/mqbroker -n localhost:9876 &


4.3执行如下命令,查看namesrv和broker进程启动是否正常。

ps -ef | grep rocketmq


5.发送、消费消息来验证集群是否正常。

5.1执行如下命令,设置namesrv环境变量。

export NAMESRV_ADDR=localhost:9876

5.2执行如下命令,进入broker根目录。

cd /tiger/rocketmq/broker1

5.3执行如下命令,发送消息。

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

返回结果如下,发送成功会打印如下内容。

5.4执行如下命令,消费消息.

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

返回结果如下,消费成功会打印如下内容,按Ctrl+C键退出。


4. 如何使用Java发送和消费消息

本步骤将指导您如何使用纯java client发送和消费消息。

当前环境已经安装了一个1 Namesrv+1 Broker的集群,执行如下命令,进入演示代码路径。

cd /data/demos

1.执行如下命令,下载java代码demo。

说明:本实验以为您下载java代码demo,你可直接执行cd 01-java-demos/命令。

git clone https://github.com/ApacheRocketMQ/01-java-demos.git
cd 01-java-demos/

2.执行如下命令,打包demo。

mvn clean package

3.将下方mvn exec:java命令中Dexec.args参数的namesrv ip地址替换为实验环境的弹性IP后,再执行该命令,运行代码demo。

mvn exec:java -Dexec.args="xxx.xxx.xxx.xxx:9876" -Dexec.mainClass="org.apache.rocketmqdemos.Startup" -Dexec.classpathScope=runtime

说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。

返回结果如下,您可以看到正常生产和消费输出。

4. Demo代码说明。

RocketMQ Java Client使用分为三个步骤:

步骤1: 创建生产者、消费者实例。

步骤2: 设置实例属性或者参数。

步骤3: 启动。

比如消费代码如下。

如果您想查看全部代码,您可以查看实验本地或者访问Demo代码


5. 如何使用Spring接入RocketMQ

本步骤将指导您如何在spring框架中使用RocketMQ发送、消费消息。

当前环境已经安装了一个1 Namesrv+1 Broker的集群,执行如下命令,进入演示代码路径。

cd /data/demos

1.执行如下命令,下载RocketMQ Spring代码demo。

git clone https://github.com/ApacheRocketMQ/02-spring-demos.git
cd 02-spring-demos/

2. 执行如下命令,打包demo。

mvn clean package

3.将下方mvn exec:java命令中Ddemo.name_srv参数的namesrv ip地址替换为实验环境的弹性IP后,再执行该命令, 运行代码demo。

mvn exec:java -Ddemo.name_srv="xxx.xxx.xxx.xxx:9876" -Dexec.mainClass="org.apache.rocketmqdemos.Startup" -Dexec.classpathScope=runtime

说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。 返回结果如下,您可以看到正常生产和消费输出。按Ctrl+C键可以退出。

4. Demo代码说明

RocketMQ Spring Client中生产者使用分为两个步骤:

步骤1: 创建RocetMQ客户端模板对象: RocketMQTemplate, 并且注入namesrv等参数。

步骤2: 调用RocketMQTemplate实例的方法即可。

比如注入生产者代码如下。

RocketMQ Spring Client中消费者只需要一步就可以直接使用。

继承RocketMQListener类,实现onMessage()方法即可, demo代码如下:

如果您想查看全部代码,您可以可以查看实验本地或者访问Demo代码


6. 如何使用Golang接入RocketMQ

本步骤将指导您如何使用golang发送、消费消息。

当前环境已经安装了一个1 Namesrv+1 Broker的集群,执行如下命令,进入演示代码路径。

cd /data/demos

1.执行如下命令,下载RocketMQ Golang代码demo.

git clone https://github.com/ApacheRocketMQ/03-golang-demo.git
cd 03-golang-demo/

2.执行如下命令,打包demo。

cd main
go build

3.将下放命令中namesrv ip地址替换为实验环境的弹性IP后,再执行该命令, 运行代码demo。

./main xxx.xxx.xxx.xxx:9876

说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。

返回结果如下,您可以看到正常生产和消费输出。按Ctrl+C键可以退出。

4. Demo代码说明

RocketMQ Golang Client中生产者、消费者使用的套路和Java client十分相似, 只是生产者、消费者属性是初始化的时候直接设置。

如果您想查看全部代码,您可以可以查看实验本地或者访问Demo代码


7. 如何使用Python接入RocketMQ

本步骤将指导您如何使用python发送、消费消息。

当前环境已经安装了一个1 Namesrv+1 Broker的RocketMQ集群, 执行如下命令,进入演示代码路径。

cd /data/demos

1.安装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和执行消费者demo的命令中的namesrv ip地址替换为实验环境的弹性IP后,执行该命令。

说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。

cd src
// 执行生产者demo
python producer.py xxx.xxx.xxx.xxx:9876
// 执行消费者demo
python consumer.py xxx.xxx.xxx.xxx:9876

返回结果如下,您可以看到正常生产和消费输出。按Ctrl+C键可以退出。

3. Demo代码说明

RocketMQ Python Client中生产者、消费者使用的套路和Java client十分相似, 只是生产者、消费者属性是初始化的时候直接设置。

生产者代码demo如下:

如果您想查看全部代码,您可以可以查看实验本地或者访问Demo代码


8. 如何使用C++接入RocketMQ

本步骤将指导您如何使用C++发送、消费消息。

当前环境已经安装了一个1 Namesrv+1 Broker的集群,执行如下命令,进入演示代码路径。

cd /data/demos


1.安装cpp动态库以及gcc相关环境。

说明:实验环境已安装python相关环境, 您可以忽略此步骤。

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的命令中的namesrv ip地址替换为实验环境的弹性IP后,执行该命令。

说明:您可在云产品资源列表中查看到实验室云服务器ECS的弹性IP。

// 打包
make clean && make
// 执行代码demo
./main xxx.xxx.xxx.xxx:9876

返回结果如下,您可以看到正常生产和消费输出。按Ctrl+C键可以退出。

3. Demo代码说明

RocketMQ C++ Client中生产者、消费者使用的套路和golang client十分相似, 只是生产者、消费者属性是初始化的时候直接设置。


比如生产者代码demo如下:

如果您想查看全部代码,您可以可以查看实验本地或者访问Demo代码

实验链接:https://developer.aliyun.com/adc/scenario/47efb0ab5a9741448e7a3e999336022e


相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
消息中间件 数据安全/隐私保护 网络架构
Windows下RabbitMQ安装及入门
Windows下RabbitMQ安装及入门
|
8天前
|
消息中间件 Docker 微服务
RabbitMQ入门指南(十一):延迟消息-延迟消息插件
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了DelayExchange插件、延迟消息插件实现延迟消息等内容。
69 0
|
8天前
|
消息中间件 微服务
RabbitMQ入门指南(十):延迟消息-死信交换机
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了死信交换机、死信交换机实现延迟消息等内容。
58 0
|
8天前
|
消息中间件 供应链 Java
RabbitMQ入门指南(九):消费者可靠性
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了消费者确认机制、失败重试机制、失败处理策略、业务幂等性等内容。
43 0
RabbitMQ入门指南(九):消费者可靠性
|
8天前
|
消息中间件 存储 Java
RabbitMQ入门指南(八):MQ可靠性
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了MQ数据持久化、LazyQueue模式、管理控制台配置Lazy模式、代码配置Lazy模式、更新已有队列为lazy模式等内容。
75 0
|
8天前
|
消息中间件 JSON Java
RabbitMQ入门指南(六):消息转换器及其案例
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ默认转换器、JSON转换器及其案例等内容。
47 0
|
8天前
|
消息中间件 Java API
RabbitMQ入门指南(五):Java声明队列、交换机以及绑定
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了Java声明队列、交换机以及绑定队列和交换机等内容。
43 0
|
8天前
|
消息中间件 微服务
RabbitMQ入门指南(四):交换机与案例解析
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了交换机在RabbitMQ中的作用与类型、交换机案例(Fanout交换机、Direct交换机、Topic交换机)等内容。
65 0
|
8天前
|
消息中间件 Java API
RabbitMQ入门指南(三):Java入门示例
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了AMQP、Spring AMQP和使用SpringAMQP实现对RabbitMQ的消息收发等内容。
34 0
RabbitMQ入门指南(三):Java入门示例
|
8天前
|
消息中间件 存储 数据库
RabbitMQ入门指南(二):架构和管理控制台的使用
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容。
65 0
RabbitMQ入门指南(二):架构和管理控制台的使用

热门文章

最新文章

相关产品

  • 云消息队列 MQ