文档首页> 分布式消息服务RocketMQ版> 快速入门> 快速连接RocketMQ并生产消费消息
更新时间:2024-07-10 GMT+08:00
分享

快速连接RocketMQ并生产消费消息

本文将为您介绍分布式消息服务RocketMQ版入门的基本流程,以创建并连接一个开启SSL的RocketMQ实例为例,帮助您快速上手RocketMQ。

操作流程

图1 RocketMQ使用流程
  1. 环境准备

    RocketMQ实例运行于虚拟私有云中,在创建实例前需要确保有可用的虚拟私有云。

  2. 创建RocketMQ实例

    在创建实例时,您可以根据需求选择需要的实例规格和数量,并开启SSL访问。开启SSL后,数据加密传输,安全性更高。

  3. 创建Topic

    在实例创建成功后,您需要创建Topic,用于发送与接收消息。

  4. 连接RocketMQ实例

    使用客户端连接实例,并通过命令行生产消费消息。

关于RocketMQ的相关概念,请参考RocketMQ基本概念

步骤一:准备环境

虚拟私有云

虚拟私有云(Virtual Private Cloud,以下简称VPC)为RocketMQ实例提供一个隔离的、用户自主配置和管理的虚拟网络环境。

  1. 在创建RocketMQ实例前,确保已存在可用的虚拟私有云和子网。

    RocketMQ实例可以使用当前账号下已创建的VPC和子网,也可以使用新创建的VPC和子网,还可以使用共享VPC和子网,请根据实际需要进行配置。

    • 创建VPC和子网的操作指导,请参考创建虚拟私有云和子网。请注意:创建的VPC与RocketMQ实例必须在相同的区域。
    • 共享VPC是基于资源访问管理(Resource Access Manager,简称RAM)服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC

  2. 在创建RocketMQ实例前,确保已存在可用的安全组。

    RocketMQ实例可以使用当前账号下已创建的安全组,也可以使用新创建的安全组,请根据实际需要进行配置。创建安全组的操作步骤,请参考创建安全组

    连接RocketMQ实例前,请添加表1所示安全组规则,其他规则请根据实际需要添加。
    表1 安全组规则

    方向

    协议

    端口

    源地址

    说明

    入方向

    TCP

    8100

    0.0.0.0/0

    通过内网访问元数据节点的端口

    入方向

    TCP

    10100-10199

    0.0.0.0/0

    访问业务节点的端口

    安全组创建后,系统默认添加的入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则。此时使用内网通过同一个VPC访问RocketMQ实例,无需添加表1的规则。

弹性云服务器

在连接RocketMQ实例之前,需要先购买弹性云服务器(Elastic Cloud Server,以下简称ECS),JDK安装、环境变量配置。本文以Linux系统的ECS为例,Windows系统ECS的JDK安装与环境变量配置可自行在互联网查找相关帮助。

  1. 登录管理控制台,在左上角单击,选择“计算 > 弹性云服务器”,创建一个ECS实例。

    具体创建操作,请参考购买弹性云服务器。如果您已有可用的ECS,可重复使用,不需要再次创建。

  2. 登录ECS。
  3. 安装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 实例。

  1. 进入购买RocketMQ实例页面
  2. “计费模式”选择“按需计费”。
  3. 在“区域”下拉列表中,选择靠近您应用程序的区域,可降低网络延时、提高访问速度。
  4. 在“项目”下拉列表中,选择项目。
  5. 在“可用区”区域,根据实际情况选择1个或者3个及以上可用区。
  6. 设置“实例名称”和“企业项目”。
  7. 设置实例信息,配置详情请参考表2

    表2 设置实例信息

    参数

    配置说明

    规格选择模式

    选择“默认”。

    版本

    选择“4.8.0”

    RocketMQ实例创建后,版本号不支持修改。

    部署架构

    选择“集群”

    CPU架构

    选择“x86计算”

    代理规格

    选择“rocketmq.4u8g.cluster”

    代理数量

    选择“1”

    代理存储空间

    选择“超高I/O 300GB”。

    实例总存储空间 = 单个代理的存储空间 * 代理数量

  8. 设置实例网络环境信息,配置详情请参考表3

    表3 设置实例网络环境信息

    参数

    配置说明

    虚拟私有云

    选择已经创建好的虚拟私有云和子网。

    虚拟私有云和子网在RocketMQ实例创建完成后,不支持修改。

    安全组

    选择已经创建好的安全组。

    SSL

    开启。

    ACL访问控制

    开启。

  9. 单击“更多配置”,设置更多相关信息,配置详情请参考表4

    表4 更多配置

    参数

    配置说明

    公网访问

    不开启。

    标签

    不设置。

    描述

    不设置。

  10. 填写完上述信息后,单击“立即购买”,进入规格确认页面。
  11. 确认实例信息无误后,提交请求。
  12. 在实例列表页面,查看RocketMQ实例是否创建成功。

    创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。

    • 当实例的“状态”变为“运行中”时,说明实例创建成功。
    • 当实例的“状态”变为“创建失败”,请删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。

步骤三:创建Topic

Topic,即消息主题,消息发送与接收的基本单元。创建RocketMQ实例成功后,需要手动创建Topic,然后才能进行生产消息和消费消息。

  1. 登录分布式消息服务RocketMQ版控制台。
  2. 单击RocketMQ实例的名称,进入实例详情页面。
  3. 在左侧导航栏,单击“Topic管理”,进入“Topic管理”页面。
  4. 单击“创建Topic”,弹出“创建Topic”页面。
  5. 参考表5,填写Topic名称和配置信息。

    表5 Topic参数说明

    参数

    说明

    Topic名称

    您可以自定义Topic名称,用于区分不同的Topic。

    Topic名称不能设置为相同,否则会创建失败。

    创建Topic后不能修改名称。

    说明:

    如果Topic名称中包含“%”或“|”,在云监控中会将“%”或“|”转换为“_”显示,例如Topic名称为“test%01”,在云监控中Topic名称显示为“test_01”。

    权限

    Topic的权限,包括发布+订阅、发布和订阅。

    关联代理

    选择在某个代理上创建Topic,并设置Topic的队列个数。

    如果实例部署在多个代理上,单击“添加关联代理”,可以在其他代理上创建Topic,并设置Topic的队列个数。

  6. 配置完成后,单击“确定”,完成Topic的创建。

步骤四:连接实例生产消费消息

本步骤主要介绍在命令行模式下调用TCP协议连接已开启SSL的RocketMQ实例。

  1. 下载“rocketmq-tutorial”示例软件包。

    wget https://dms-demo.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip

  2. 解压“rocketmq-tutorial”。

    unzip rocketmq-tutorial.zip

  3. 进入“rocketmq-tutorial/bin”目录。

    cd rocketmq-tutorial/bin

  4. 运行生产普通消息示例。

    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命令退出。

  5. 运行消费普通消息示例。

    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命令退出。

  6. 运行生产带消息轨迹的消息示例。

    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命令退出。

  7. 运行消费消息示例,并发送消息轨迹。

    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命令退出。

分享:

    相关文档

    相关产品