快速连接RocketMQ并生产消费消息
本章节将为您介绍分布式消息服务RocketMQ版(以下简称RocketMQ)入门的使用流程,以创建一个开启SSL的RocketMQ实例,使用客户端连接实例并生产消费消息为例,帮助您快速上手RocketMQ。
操作流程
- 准备工作。
在创建RocketMQ实例前,您需要完成注册华为云并实名认证、为账户充值、为用户添加操作权限、创建VPC和子网、创建安全组、创建弹性云服务器并配置环境的准备工作。
- 创建RocketMQ实例。
在创建实例时,您需要开启SSL、关闭ACL,并配置已创建的VPC和子网、安全组。
- 创建Topic。
在实例创建成功后,您需要创建Topic,用于发送与接收消息。
- 连接RocketMQ实例生产和消费消息。
使用客户端连接实例,并通过命令行生产消费消息。
步骤一:准备工作
- 注册华为账号并实名认证。
如果您已有一个华为账号,请跳过此步骤。如果您还没有华为账户,请参考注册华为账号并开通华为云和实名认证完成华为云的注册和实名认证。
- 为账户充值。
如果您的账户有足够金额,请跳到下一个任务。如果您的账户还没有足够金额,请先为账户充值,具体请参考账户充值。
- 为用户添加RocketMQ实例的操作权限。
您需要有RocketMQ的管理员权限“DMS FullAccess”,具体操作请参考创建用户并授权使用DMS for RocketMQ。
- 创建VPC和子网。
创建的VPC与RocketMQ实例必须在相同的区域。
RocketMQ实例运行于虚拟私有云中,在创建实例前需要确保有可用的虚拟私有云。创建VPC和子网的操作指导,请参考创建虚拟私有云和子网。
- 创建安全组。
创建安全组的操作步骤,请参考创建安全组。
连接RocketMQ实例前,请添加表1所示安全组规则。
创建安全组后,系统默认添加入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,此时使用内网通过同一个VPC访问RocketMQ实例,无需添加表1的规则。
- 创建弹性云服务器(Elastic Cloud Server,以下简称ECS)并配置环境。
本操作以Linux系统的ECS为例,Windows系统ECS的JDK安装与环境变量配置可自行在互联网查找相关帮助。
- 登录管理控制台,在左上角单击,选择“计算 > 弹性云服务器”,创建一个ECS实例。
具体创建操作,请参考购买弹性云服务器。如果您已有可用的ECS,可重复使用,不需要再次创建。
- 使用root用户登录ECS。
- 安装JDK,并配置JAVA_HOME与PATH环境变量。
- 下载JDK。
ECS虚拟机默认自带的JDK可能不符合要求,例如OpenJDK,需要配置为Oracle的JDK,可至Oracle官方下载页面下载Java Development Kit 1.8.111及以上版本。
- 执行以下命令解压JDK。
tar -zxvf jdk-8u321-linux-x64.tar.gz
“jdk-8u321-linux-x64.tar.gz”为JDK的版本,请根据实际情况修改。
- 执行以下命令编辑环境变量文件“.bash_profile”。
vim ~/.bash_profile
- 在环境变量文件中添加如下内容。
export JAVA_HOME=/opt/java/jdk1.8.0_321 export PATH=$JAVA_HOME/bin:$PATH
“/opt/java/jdk1.8.0_321”为JDK的安装路径,请根据实际情况修改。
- 按“Esc”退出编辑模式并执行以下命令保存环境变量文件。
:wq
- 执行以下命令使环境变量生效。
source .bash_profile
- 下载JDK。
- 执行以下命令查看JDK是否安装成功。
java -version
显示信息中包含如下信息则表示JDK安装成功。java version "1.8.0_321"
- 执行以下命令下载“rocketmq-tutorial”示例软件包。
wget https://dms-demos.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip
- 执行以下命令解压“rocketmq-tutorial”。
unzip rocketmq-tutorial.zip
- 登录管理控制台,在左上角单击,选择“计算 > 弹性云服务器”,创建一个ECS实例。
步骤二:创建RocketMQ实例
使用RocketMQ进行消息生产和消费时,必须先创建RocketMQ实例。实例中的虚拟机资源会存储Topic信息。
- 进入购买RocketMQ实例页面。
- 设置实例信息,配置详情请参考表2。
表2 设置实例信息 参数
参数说明
计费模式
选择实例的计费模式。此处选择“按需计费”,即按照实例的实际使用时长计费,秒级计费,按小时结算。
区域
选择靠近您业务的区域,可以降低网络时延、提高访问速度。此处选择“亚太-新加坡”。
项目
选择区域对应的项目。此处选择“亚太-新加坡”。
可用区
可用区指在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。此处选择“可用区1”。
实例名称
填写实例名称,此处配置为“rocketmq-test”。
企业项目
企业项目是对企业不同项目间资源的分组和管理,属于逻辑隔离。此处选择“default”。该参数针对企业用户使用。
规格选择模式
选择实例的规格设置模式,此处选择“默认”,即自定义RocketMQ实例的版本号、实例类型、部署架构、实例规格和存储空间。
版本
选择实例的版本。此处选择“4.8.0”。
RocketMQ实例创建后,版本号不支持修改。
部署架构
选择实例的部署架构。此处选择“集群”。
代理规格
选择实例相应的代理规格。此处选择“rocketmq.4u8g.cluster”。
代理数量
选择实例相应的代理数量。此处选择“1”。
代理存储空间
选择存储RocketMQ数据的磁盘类型和单个代理存储空间。选择“超高I/O 300GB”。实例总存储空间 = 单个代理的存储空间 * 代理数量
虚拟私有云
选择实例的VPC和子网。此处选择步骤一:准备工作中已创建的VPC和子网。
安全组
选择实例的安全组。此处选择步骤一:准备工作中已创建的安全组。
SSL
开启SSL,表示服务端与客户端之间通过密文传输,安全性较高,性能较低。此处选择配置为“SSL”。
ACL访问控制
开启ACL访问控制可以对生产消息和消费消息进行权限管理。此处选择关闭ACL访问控制。
更多配置
公网访问
开启公网访问需要绑定弹性IP地址。此处选择关闭公网访问。
标签
标签是RocketMQ实例的标识。此处不设置标签。
描述
描述是对实例的补充说明。此处不填写描述信息。
- 填写完上述信息后,单击“立即购买”,进入规格确认页面。
- 确认实例信息无误后,勾选“协议”,并单击“提交”请求。
- 在实例列表页面,查看RocketMQ实例是否创建成功。
创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。
- 当实例的“状态”变为“运行中”时,说明实例创建成功。
- 当实例的“状态”变为“创建失败”,请删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。
- 实例创建成功后,单击实例名称,进入实例基本信息页面。
- 记录实例的连接地址,便于生产和消费消息时使用。
图2 记录实例连接地址
步骤三:创建Topic
Topic,即消息主题,消息发送与接收的基本单元。创建RocketMQ实例成功后,需要手动创建Topic,然后才能进行生产消息和消费消息。
- 单击RocketMQ实例的名称,进入实例基本信息页面。
- 在左侧导航栏,单击“Topic管理”,进入“Topic管理”页面。
- 单击“创建Topic”,弹出“创建Topic”页面。
- 参考表3,填写Topic名称和配置信息。
表3 Topic参数说明 参数
说明
Topic名称
填写Topic的名称。此处配置为“Topic01”。
权限
选择Topic的权限。此处选择“发布+订阅”,表示生产者可以发布消息到该Topic,消费者可以消费该Topic中的消息。
关联代理
选择Topic关联的代理。此处选择“代理”为“broker-0”,“队列个数”为“3”。
描述
描述是对Topic的补充说明。此处不填写描述信息。
图3 创建Topic
- 配置完成后,单击“确定”,完成Topic的创建。
步骤四:连接RocketMQ实例生产和消费消息
- 在ECS环境中进入“rocketmq-tutorial/bin”目录。
cd rocketmq-tutorial/bin
- 运行生产普通消息命令。
命令示例如下:
JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "10.xxx.xxx.89:8100;10.xxx.xxx.144:8100" -t Topic01 -p "hello rocketmq"
- 运行消费普通消息命令。
命令示例如下:
JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "10.xxx.xxx.89:8100;10.xxx.xxx.144:8100" -t Topic01
如上图中BODY显示的内容即为消费消息的内容。
如需停止消费使用Ctrl+C命令退出。
相关信息
- 如果您想了解关于RocketMQ的相关概念,请参考RocketMQ基本概念。
- RocketMQ实例创建时,如果消费者客户端与生产者客户端无需通过密文传输,那么您可以关闭SSL。此时连接RocketMQ实例生产和消费消息的操作请参见使用客户端连接RocketMQ(关闭SSL)。
- 如果您需要创建多个用户并为其赋予不同的Topic和消费组权限,以达到用户之间的权限隔离,那么您需要先开启ACL访问控制并配置ACL用户,具体操作请参考开启RocketMQ ACL访问和配置RocketMQ ACL用户。
- 如果您需要通过公网访问RocketMQ实例,请参见配置RocketMQ实例的公网访问。