# 快速连接RocketMQ并生产消费消息
本章节将为您介绍分布式消息服务RocketMQ版（以下简称RocketMQ）入门的使用流程，以创建一个开启SSL的RocketMQ实例，客户端使用内网通过同一个VPC连接RocketMQ实例生产消费消息为例，帮助您快速上手RocketMQ。
#### 操作流程
图1RocketMQ使用流程   
![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000001992837069.png "点击放大")
1. [准备工作]。
   在创建RocketMQ实例前，您需要完成注册华为云并实名认证、为账户充值、为用户添加操作权限、创建VPC和子网、创建安全组、创建弹性云服务器并配置环境的准备工作。
   
2. [创建RocketMQ实例]。
   在创建实例时，您需要开启SSL、关闭ACL，并配置已创建的VPC和子网、安全组。
   
3. [创建Topic]。
   在实例创建成功后，您需要创建Topic，用于发送与接收消息。
   
4. [连接RocketMQ实例生产和消费消息]。
   使用客户端连接实例，并通过命令行生产消费消息。
   
 
 #### 步骤一：准备工作
1. 注册华为账号并实名认证。 
   在创建RocketMQ实例前，请先注册华为账号并实名认证，具体步骤请参考[注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)和[实名认证介绍](https://support.huaweicloud.com/usermanual-account/account_auth_00001.html)。
   如果您已有一个华为账号并实名认证，请跳过此步骤。
   
   
2. 为账户充值。 
   如果您的账户有足够金额，请跳到下一个任务。如果您的账户还没有足够金额，请先为账户充值，具体请参考[账户充值](https://support.huaweicloud.com/usermanual-billing/bills-topic_30000002.html)。
   
   
3. 为用户添加RocketMQ实例的操作权限。 
   您需要有RocketMQ的管理员权限"DMS FullAccess"，具体操作请参考[创建用户并授权使用DMS for RocketMQ](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-030.html)。
   
   
4. 创建VPC和子网。
   
   ![](https://support.huaweicloud.com/qs-hrm/public_sys-resources/caution_3.0-zh-cn.png)
   创建的VPC与RocketMQ实例必须在相同的区域。
   RocketMQ实例运行于虚拟私有云中，在创建实例前需要确保有可用的虚拟私有云。创建VPC和子网的操作指导，请参考[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
   
   
5. 创建安全组。
   
   创建安全组的操作步骤，请参考[创建安全组](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013748715.html)。
   连接RocketMQ实例前，请添加[表1]所示安全组规则。
    表1安全组规则 
   | 方向   | 协议     | 端口    | 源地址                      | 说明                         |
   |:---|:---|:---|:---|:---|
   | 入方向   | TCP    | 8100 | RocketMQ客户端所在的IP地址或地址段。 | 使用TCP协议，通过内网访问实例的端口。      |
   | 入方向 | TCP   | 8080 | RocketMQ客户端所在的IP地址或地址段。 | 使用gRPC协议，通过内网访问实例的端口。    |
   | 入方向  | TCP | 10100 | RocketMQ客户端所在的IP地址或地址段。 | 使用TCP协议，通过内网访问业务节点的端口。 |
      
   ![](https://support.huaweicloud.com/qs-hrm/public_sys-resources/note_3.0-zh-cn.png)
   创建安全组后，系统默认添加入方向"允许安全组内的弹性云服务器彼此通信"规则和出方向"放通全部流量"规则，此时使用内网通过同一个VPC访问RocketMQ实例，无需添加[表1]的规则。
   
   
6. 创建弹性云服务器（Elastic Cloud Server，以下简称ECS）并配置环境。 
   本操作以Linux系统的ECS为例，Windows系统ECS的JDK安装与环境变量配置可自行在互联网查找相关帮助。
   1. 进入[购买ECS页面](https://console.huaweicloud.com/ecm/?locale=zh-cn#/ecs/create/custom)。
      创建ECS的具体步骤，请参考[购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。如果您已有可用的ECS，可重复使用，不需要再次购买。
      
   
   2. 使用root用户登录ECS。
   
   3. 安装JDK，并配置JAVA_HOME与PATH环境变量。
      1. 下载JDK。
         ![](https://support.huaweicloud.com/qs-hrm/public_sys-resources/note_3.0-zh-cn.png)
         ECS虚拟机默认自带的JDK可能不符合要求，例如OpenJDK，需要配置为Oracle的JDK，可至Oracle官方下载页面[下载Java Development Kit 1.8.111及以上版本](https://www.oracle.com/java/technologies/downloads/#java8)。
         
      
      2. 执行以下命令解压JDK。
         ```
         tar -zxvf jdk-8u321-linux-x64.tar.gz
         ```
         "jdk-8u321-linux-x64.tar.gz"为JDK的版本，请根据实际情况修改。
         
      
      3. 执行以下命令编辑环境变量文件".bash_profile"。
         ```
         vim ~/.bash_profile
         ```
         
      
      4. 在键盘上按"i"，添加如下内容。
         ```
         export JAVA_HOME=/opt/java/jdk1.8.0_321
         export PATH=$JAVA_HOME/bin:$PATH
         ```
         "/opt/java/jdk1.8.0_321"为JDK的安装路径，请根据实际情况修改。
         
      
      5. 按"Esc"退出编辑模式，输入以下命令后按"Enter"，保存并退出环境变量文件。
         ```
         :wq
         ```
         
      
      6. 执行以下命令使环境变量生效。
         ```
         source .bash_profile
         ```
         
       
   
   4. 执行以下命令查看JDK是否安装成功。
      ```
      java -version
      ```
      显示信息中包含如下信息则表示JDK安装成功。
      ```
      java version "1.8.0_321"
      ```
      
   
   5. 执行以下命令下载"rocketmq-tutorial"示例软件包。 **下载示例软件包前，请确保客户端所在服务器可以访问公网。**
      ```
      wget https://dms-demos.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip
      ```
      
   
   6. 执行以下命令解压"rocketmq-tutorial"。
      ```
      unzip rocketmq-tutorial.zip
      ```
      
   
   
   
   
 
 #### 步骤二：创建RocketMQ实例
使用RocketMQ进行消息生产和消费时，必须先创建RocketMQ实例。实例中的虚拟机资源会存储Topic信息。
1. 进入[购买RocketMQ实例页面](https://console.huaweicloud.com/dms/?engine=reliability&locale=zh-cn#/queue/createInstanceV2)。
2. 在"快速购买"页签，设置实例基础配置，如[图2]所示，配置详情请参考[表2]。
   
    表2设置实例基础配置 
   | 参数   | 说明                                                                                        |
   |:---|:---|
   | 计费模式  | 选择"按需计费"，即先使用再付费，按照RocketMQ实例实际使用时长计费，秒级计费，按小时结算。                                           |
   | 区域   | 不同区域的云服务产品之间内网互不相通。请就近选择靠近您业务的区域，可减少网络时延，提高访问速度。 选择"华北-北京四"。 |
   | 可用区 | 可用区指在同一区域下，电力、网络隔离的物理区域，可用区之间内网互通，不同可用区之间物理隔离。 选择1个可用区。         |
      
   图2设置实例基础配置   
   ![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000002249165754.png "点击放大")
   
   
3. 设置实例规格和存储空间，如[图3]所示，配置详情请参考[表3]。
   
    表3设置实例规格和存储空间 
   | 参数  | 说明                                                                                                                        |
   |:---|:---|
   | 套餐规格 | 选择"综合推荐"中的"入门规格"。针对入门级用户，提供兼容RocketMQ协议的基础版小规格实例，适用于性能诉求不高、时延容忍度较高的成本敏感业务或者预发环境等。                                             |
   | 磁盘类型 | 根据实际需要选择存储RocketMQ数据的磁盘类型。 RocketMQ实例创建后，磁盘类型不支持修改。 磁盘类型选择"超高I/O"。 |
   | 磁盘容量    | 根据实际需要选择存储RocketMQ数据的磁盘容量。 磁盘容量设置为"200GB"。                                                       |
      
   图3设置实例规格和存储空间   
   ![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000002452235964.png "点击放大")
   
   
4. 设置实例网络环境信息，如[图4]所示，配置详情请参考[表4]。
   
    表4设置实例网络环境信息 
   | 参数      | 说明                                                                                                            |
   |:---|:---|
   | 虚拟私有云   | 虚拟私有云在RocketMQ实例创建完成后，不支持修改。 选择[准备工作]中设置好的虚拟私有云。 |
   | 子网       | 子网在RocketMQ实例创建完成后，不支持修改。 选择[准备工作]中设置好的子网。         |
   | 内网IP地址 | 虚拟私有云内部用于标识和通信的IP地址。 选择"自动分配"。                                               |
   | 安全组      | 选择[准备工作]中设置好的安全组。                                                             |
      
   图4设置实例网络环境信息   
   ![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000002485317853.png "点击放大")
   
   
5. 设置实例的访问方式，如[图5]所示，配置详情请参考[表5]。
   
    表5设置实例访问方式 
   | 参数   | 说明                                                   |
   |:---|:---|
   | 公网访问 | 勾选公网访问需要绑定弹性IP地址。此处选择不勾选公网访问。                     |
   | 加密方式  | 开启SSL，表示服务端与客户端之间通过密文传输，安全性较高，性能较低。此处选择配置为"SSL"。 |
      
   图5设置实例访问方式   
   ![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000002452238452.png "点击放大")
   
   
6. 设置实例高级配置，如[图6]所示，配置详情请参考[表6]，其他参数保持默认设置。
   
    表6设置实例高级配置 
   | 参数   | 说明                                                                                                              |
   |:---|:---|
   | 实例名称  | 实例名称支持自定义，但需要符合命名规则：长度为4\~64个字符，由英文字母开头，只能由英文字母、数字、中划线、下划线组成。 此处配置为"rocketmq-test"。 |
   | 企业项目   | 该参数针对企业用户使用。企业项目是对企业不同项目间资源的分组和管理，属于逻辑隔离。 此处选择"default"。                            |
   | ACL访问控制 | 勾选ACL访问控制可以对生产消息和消费消息进行权限管理。此处选择不勾选ACL访问控制。                                                                     |
   | 标签    | 标签是RocketMQ实例的标识。此处不设置标签。                                                                                        |
   | 描述      | 描述是对实例的补充说明。此处不填写描述信息。                                                                                           |
      
   图6设置实例高级配置   
   ![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000002284295513.png "点击放大")
   
   
7. 填写完上述信息后，单击"下一步"，进入"确认配置"页面。
8. 确认实例信息无误后，勾选"华为云用户协议"，并单击"提交"请求。
9. 在实例列表页面，查看RocketMQ实例是否创建成功。 
   创建实例大约需要3到15分钟，此时实例的"状态"为"创建中"。
   - 当实例的"状态"变为"运行中"时，说明实例创建成功。
   
   - 当实例的"状态"变为"创建失败"，请删除创建失败的实例，然后重新创建。如果重新创建仍然失败，请联系客服。
   
   
   
   
10. 实例创建成功后，单击实例名称，进入实例概览页面。
11. 在"连接信息"中记录实例的连接地址，便于生产和消费消息时使用。
    
    图7记录实例连接地址   
    ![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000002673259237.png "点击放大")
    
    
 
 #### 步骤三：创建Topic
Topic，即消息主题，消息发送与接收的基本单元。创建RocketMQ实例成功后，需要手动创建Topic，然后才能进行生产消息和消费消息。
1. 单击RocketMQ实例的名称，进入实例概览页面。
2. 在左侧导航栏，单击"实例管理 \> Topic管理"，进入"Topic管理"页面。
3. 单击"创建Topic"，弹出"创建Topic"页面。
4. 参考[表7]，填写Topic名称和配置信息。
   
    表7Topic参数说明 
   | 参数    | 说明                         |
   |:---|:---|
   | Topic名称 | 填写Topic的名称。此处配置为"Topic01"。   |
   | 消息类型  | 选择消息的类型。此处选择"普通"。           |
   | 描述    | 描述是对Topic的补充说明。此处不填写描述信息。 |
      
   图8创建Topic   
   ![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000002353854117.png "点击放大")
   
   
5. 配置完成后，单击"确定"，完成Topic的创建。
 
 #### 步骤四：连接RocketMQ实例生产和消费消息
1. 在ECS环境中进入"rocketmq-tutorial/bin"目录。 
   ```
   cd rocketmq-tutorial/bin
   ```
   
   
2. 运行生产普通消息命令。 
   命令示例如下：
   ```
   JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "10.xxx.xxx.89:8100;10.xxx.xxx.144:8100" -t Topic01 -p "hello rocketmq"
   ```
   - 10.xxx.xxx.89:8100;10.xxx.xxx.144:8100：表示RocketMQ实例的"连接地址"，即[11]中记录的连接地址。
   
   - Topic01：表示RocketMQ实例下创建的Topic名称，即[4]中创建的Topic名称。
   
   - hello rocketmq：表示生产消息的内容，可自定义。
    
   ![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000001956117738.png "点击放大")
   
   
3. 运行消费普通消息命令。 
   命令示例如下：
   ```
   JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "10.xxx.xxx.89:8100;10.xxx.xxx.144:8100" -t Topic01
   ```
   ![](https://support.huaweicloud.com/qs-hrm/zh-cn_image_0000001992837081.png "点击放大")
   如上图中**BODY**显示的内容即为消费消息的内容。
   如需停止消费使用**Ctrl+C**命令退出。
   
   
 
#### 相关信息
- 如果您想了解关于RocketMQ的相关概念，请参考[RocketMQ基本概念](https://support.huaweicloud.com/productdesc-hrm/hrm-pd-008.html)。
- RocketMQ实例创建时，如果消费者客户端与生产者客户端无需通过密文传输，那么您可以关闭SSL。此时连接RocketMQ实例生产和消费消息的操作请参见[使用客户端连接RocketMQ（关闭SSL）](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-039.html)。
- 如果您需要创建多个用户并为其赋予不同的Topic和消费组权限，以达到用户之间的权限隔离，那么您需要先开启ACL访问控制并配置ACL用户，具体操作请参考[开启RocketMQ ACL访问](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-070.html)和[配置RocketMQ ACL用户](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-035.html)。
- 如果您需要通过公网访问RocketMQ实例，请参见[配置RocketMQ实例的公网访问](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-033.html)。
 
