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版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
消息中间件 Java Kafka
RabbitMQ 入门
RabbitMQ 入门
|
5月前
|
消息中间件 新零售 弹性计算
云消息队列 RabbitMQ 版入门训练营,解锁对比开源优势与零基础实战
欢迎加入「云消息队列 RabbitMQ 版入门训练营」。
177 17
|
4月前
|
消息中间件 存储 Java
分享一下rocketmq入门小知识
分享一下rocketmq入门小知识
60 0
分享一下rocketmq入门小知识
|
4月前
|
网络协议 物联网 测试技术
App Inventor 2 MQTT拓展入门(保姆级教程)
本文演示的是App和一个测试客户端进行消息交互的案例,实际应用中,我们的测试客户端可以看着是任意的、支持MQTT协议的硬件,通过订阅及发布消息,联网硬件与我们的App进行双向数据通信,以实现万物互联的智能控制效果。
246 2
EMQ
|
7月前
|
安全 网络性能优化
MQTT 5.0 报文(Packets)入门指南
MQTT 控制报文是 MQTT 数据传输的最小单元。MQTT 客户端和服务端通过交换控制报文来完成它们的工作,比如订阅主题和发布消息。
EMQ
731 13
MQTT 5.0 报文(Packets)入门指南
|
6月前
|
消息中间件 存储 Kafka
01.RabbitMQ入门
01.RabbitMQ入门
60 0
|
7月前
|
消息中间件 监控 Linux
RabbitMQ轻松入门:从零开始的部署与安装指南
RabbitMQ轻松入门:从零开始的部署与安装指南
148 0
RabbitMQ轻松入门:从零开始的部署与安装指南
|
6月前
|
消息中间件 存储 前端开发
RabbitMQ在Java中的完美实现:从入门到精通
本文由木头左介绍如何在Java项目中使用RabbitMQ。RabbitMQ是开源的AMQP实现,支持多种客户端,适合分布式系统中的消息传递。首先需安装Erlang和RabbitMQ,接着在Java项目中添加RabbitMQ客户端库依赖。通过创建连接工厂和连接,建立与RabbitMQ的通信,并展示了创建连接和通道的代码示例。
|
7月前
|
消息中间件 Docker 微服务
RabbitMQ入门指南(十一):延迟消息-延迟消息插件
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了DelayExchange插件、延迟消息插件实现延迟消息等内容。
1048 0
|
7月前
|
消息中间件 微服务
RabbitMQ入门指南(十):延迟消息-死信交换机
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了死信交换机、死信交换机实现延迟消息等内容。
193 0

相关产品

  • 云消息队列 MQ