快速连接RocketMQ并生产消费消息
本文将为您介绍分布式消息服务RocketMQ版入门的基本流程,以创建并连接一个开启SSL的RocketMQ实例为例,帮助您快速上手RocketMQ。
操作流程
- 环境准备。
RocketMQ实例运行于虚拟私有云中,在创建实例前需要确保有可用的虚拟私有云。
- 创建RocketMQ实例。
在创建实例时,您可以根据需求选择需要的实例规格和数量,并开启SSL访问。开启SSL后,数据加密传输,安全性更高。
- 创建Topic。
在实例创建成功后,您需要创建Topic,用于发送与接收消息。
- 连接RocketMQ实例。
使用客户端连接实例,并通过命令行生产消费消息。
关于RocketMQ的相关概念,请参考RocketMQ基本概念。
步骤一:准备环境
虚拟私有云
虚拟私有云(Virtual Private Cloud,以下简称VPC)为RocketMQ实例提供一个隔离的、用户自主配置和管理的虚拟网络环境。
- 在创建RocketMQ实例前,确保已存在可用的虚拟私有云和子网。
RocketMQ实例可以使用当前账号下已创建的VPC和子网,也可以使用新创建的VPC和子网,还可以使用共享VPC和子网,请根据实际需要进行配置。
- 创建VPC和子网的操作指导,请参考创建虚拟私有云和子网。请注意:创建的VPC与RocketMQ实例必须在相同的区域。
- 共享VPC是基于资源访问管理(Resource Access Manager,简称RAM)服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。
- 在创建RocketMQ实例前,确保已存在可用的安全组。
RocketMQ实例可以使用当前账号下已创建的安全组,也可以使用新创建的安全组,请根据实际需要进行配置。创建安全组的操作步骤,请参考创建安全组。
连接RocketMQ实例前,请添加表1所示安全组规则,其他规则请根据实际需要添加。安全组创建后,系统默认添加的入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则。此时使用内网通过同一个VPC访问RocketMQ实例,无需添加表1的规则。
弹性云服务器
在连接RocketMQ实例之前,需要先购买弹性云服务器(Elastic Cloud Server,以下简称ECS),JDK安装、环境变量配置。本文以Linux系统的ECS为例,Windows系统ECS的JDK安装与环境变量配置可自行在互联网查找相关帮助。
- 登录管理控制台,在左上角单击,选择“计算 > 弹性云服务器”,创建一个ECS实例。
具体创建操作,请参考购买弹性云服务器。如果您已有可用的ECS,可重复使用,不需要再次创建。
- 登录ECS。
- 安装Java JDK或JRE,并配置JAVA_HOME与PATH环境变量,使用执行用户在用户家目录下修改.bash_profile,添加如下行。其中“/opt/java/jdk1.8.0_151”为JDK的安装路径,请根据实际情况修改。
export JAVA_HOME=/opt/java/jdk1.8.0_151 export PATH=$JAVA_HOME/bin:$PATH
执行source .bash_profile命令使修改生效。
ECS虚拟机默认自带的JDK可能不符合要求,例如OpenJDK,需要配置为Oracle的JDK,可至Oracle官方下载页面下载Java Development Kit 1.8.111及以上版本。
步骤二:创建RocketMQ实例
本步骤以在“亚太-新加坡”区域创建一个开启SSL的RocketMQ 4.8.0实例为例,介绍如何在控制台创建RocketMQ 实例。
- 进入购买RocketMQ实例页面。
- “计费模式”选择“按需计费”。
- 在“区域”下拉列表中,选择靠近您应用程序的区域,可降低网络延时、提高访问速度。
- 在“项目”下拉列表中,选择项目。
- 在“可用区”区域,根据实际情况选择1个或者3个及以上可用区。
- 设置“实例名称”和“企业项目”。
- 设置实例信息,配置详情请参考表2。
- 设置实例网络环境信息,配置详情请参考表3。
- 单击“更多配置”,设置更多相关信息,配置详情请参考表4。
- 填写完上述信息后,单击“立即购买”,进入规格确认页面。
- 确认实例信息无误后,提交请求。
- 在实例列表页面,查看RocketMQ实例是否创建成功。
创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。
- 当实例的“状态”变为“运行中”时,说明实例创建成功。
- 当实例的“状态”变为“创建失败”,请删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。
步骤三:创建Topic
Topic,即消息主题,消息发送与接收的基本单元。创建RocketMQ实例成功后,需要手动创建Topic,然后才能进行生产消息和消费消息。
- 登录分布式消息服务RocketMQ版控制台。
- 单击RocketMQ实例的名称,进入实例详情页面。
- 在左侧导航栏,单击“Topic管理”,进入“Topic管理”页面。
- 单击“创建Topic”,弹出“创建Topic”页面。
- 参考表5,填写Topic名称和配置信息。
表5 Topic参数说明 参数
说明
Topic名称
您可以自定义Topic名称,用于区分不同的Topic。
Topic名称不能设置为相同,否则会创建失败。
创建Topic后不能修改名称。
说明:如果Topic名称中包含“%”或“|”,在云监控中会将“%”或“|”转换为“_”显示,例如Topic名称为“test%01”,在云监控中Topic名称显示为“test_01”。
权限
Topic的权限,包括发布+订阅、发布和订阅。
关联代理
选择在某个代理上创建Topic,并设置Topic的队列个数。
如果实例部署在多个代理上,单击“添加关联代理”,可以在其他代理上创建Topic,并设置Topic的队列个数。
- 配置完成后,单击“确定”,完成Topic的创建。
步骤四:连接实例生产消费消息
本步骤主要介绍在命令行模式下调用TCP协议连接已开启SSL的RocketMQ实例。
- 下载“rocketmq-tutorial”示例软件包。
wget https://dms-demo.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip
- 解压“rocketmq-tutorial”。
unzip rocketmq-tutorial.zip
- 进入“rocketmq-tutorial/bin”目录。
cd rocketmq-tutorial/bin
- 运行生产普通消息示例。
JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq"
参数说明如下:
- 连接地址:表示RocketMQ实例的“连接地址”。
- Topic名称:RocketMQ实例下创建的Topic名称。
示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的连接地址,“topic-test”为Topic名称。
JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq"
使用Ctrl+C命令退出。
- 运行消费普通消息示例。
JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称}
参数说明如下:
- 连接地址:表示RocketMQ实例的“连接地址”。
- Topic名称:RocketMQ实例下创建的Topic名称。
示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的连接地址,“topic-test”为Topic名称。
JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test
如需停止消费使用Ctrl+C命令退出。
- 运行生产带消息轨迹的消息示例。
JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" -m true
参数说明如下:
- 连接地址:表示RocketMQ实例的“连接地址”。
- Topic名称:RocketMQ实例下创建的Topic名称。
示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的连接地址,“topic-test”为Topic名称。
JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" -m true
使用Ctrl+C命令退出。
- 运行消费消息示例,并发送消息轨迹。
JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} -m true
参数说明如下:
- 连接地址:表示RocketMQ实例的“连接地址”。
- Topic名称:RocketMQ实例下创建的Topic名称。
示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的连接地址,“topic-test”为Topic名称。
JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -m true
使用Ctrl+C命令退出。