云服务器内容精选

  • 快速购买RocketMQ实例 进入购买RocketMQ实例页面。 在“快速购买”页签中,设置实例基础配置。 表4 实例基础配置参数说明 参数名称 说明 计费模式 RocketMQ实例的计费模式。 取值范围: 包年/包月:一种预付费模式,即先付费再使用,按照订单的购买周期进行结算。 按需付费:一种后付费模式,即先使用再付费,按照RocketMQ实例实际使用时长计费,秒级计费,按小时结算。 区域 不同区域的云服务产品之间内网互不相通。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 可用区 可用区指在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。 请根据实际情况选择可用区。RocketMQ实例创建成功后,不支持修改可用区。 设置套餐规格。 综合推荐:分布式消息服务RocketMQ版已经预设了几种规格,请根据需要选择。 磁盘类型和磁盘大小根据实际需求进行设置。RocketMQ实例创建后,磁盘类型不支持修改。 磁盘类型支持高I/O、超高I/O、通用型SSD和极速型SSD。对于测试环境使用的RocketMQ实例,推荐选择高I/O磁盘。对于生产环境使用的RocketMQ实例,推荐选择通用型SSD及以上的磁盘规格。具体如何选择磁盘类型可以参考磁盘类型及性能介绍和磁盘类型对RocketMQ实例性能有什么影响?。 图1 综合推荐 规格测算:系统根据您输入的参数(Topic个数、生产TPS峰值、消费TPS峰值、平均消息大小和日生产消息数),为您计算出不同规格所需的代理个数和代理存储空间,您根据实际情况选择。5.x版本不支持规格测算。 图2 规格测算 设置网络信息。 表5 实例网络参数说明 参数名称 说明 虚拟私有云 选择已经创建好的或共享的虚拟私有云。 虚拟私有云可以为您的RocketMQ实例构建隔离的、能自主配置和管理的虚拟网络环境。您可以单击右侧的“管理虚拟私有云”,跳转到网络控制台的“虚拟私有云”页面,查看或创建虚拟私有云。 RocketMQ实例创建完成后,不支持修改虚拟私有云。 子网 选择已经创建好的或共享的子网。 子网在RocketMQ实例创建完成后,不支持修改。 子网开启IPv6后,RocketMQ实例支持IPv6功能。 IPv6 子网开启IPv6后,页面才显示此参数。开启IPv6后,客户端可以使用IPv6地址连接RocketMQ实例。 RocketMQ实例创建完成后,不支持修改IPv6开关。 此功能仅在“华东二”区域上线。 使用内网IPv6方式连接实例需要通过 VPC终端节点 实现,使用期间会产生VPC终端节点的费用,收费标准请参考计费说明。 安全组 选择已经创建好的安全组。 安全组是一组对RocketMQ实例的访问规则的集合。您可以单击右侧的“管理安全组”,跳转到网络控制台的“安全组”页面,查看或创建安全组。 客户端连接RocketMQ实例前,请根据不同的连接方式配置对应的安全组规则,否则会连接失败。具体的安全组规则请参考表3。 设置实例访问方式。 表6 实例访问方式参数说明 参数名称 说明 公网访问 通过公网连接RocketMQ实例。 默认为关闭状态。开启公网访问后,还需要为RocketMQ实例设置对应的IPv4弹性IP地址。 加密方式 RocketMQ实例支持的接入加密方式。 取值范围: SSL:服务端与客户端之间通过密文传输,安全性较高,性能较低。 PLAINTEXT:服务端与客户端之间通过明文传输,安全性较低,性能较高。 PERMISSIVE:服务端与客户端之间即能通过明文传输又能通过密文传输,传输方式由客户端决定。 请根据实际情况选择。 设置高级配置。 表7 高级配置参数说明 参数名称 说明 实例名称 名称支持自定义,但需要符合命名规则:长度为4~64个字符,由英文字母开头,只能由英文字母、数字、中划线、下划线组成。 企业项目 该参数针对企业用户使用。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理,默认项目为default。 ACL访问控制 开启ACL访问控制可以对生产消息和消费消息进行权限管理。 关闭ACL访问控制后,将无法使用用户管理功能。 标签 标签用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 如您的组织已经设定分布式消息服务RocketMQ版的相关标签策略,则需按照标签策略规则为RocketMQ实例添加标签。标签如果不符合标签策略的规则,则可能会导致RocketMQ实例创建失败,请联系组织管理员了解标签策略详情。 如果您已经预定义了标签,在“标签键”和“标签值”中选择已经定义的标签键值对。另外,您可以单击“创建预定义标签”,跳转到标签管理服务页面,查看已经预定义的标签,或者创建新的标签。 您也可以直接单击“添加新标签”,在“标签键”和“标签值”中设置标签信息。 当前每个RocketMQ实例最多支持添加20个不同标签,标签的命名规格,请参考配置RocketMQ实例标签章节。 描述 设置实例的描述信息,长度为0~1024个字符。 设置实例购买时长。 当选择了“包年/包月”付费模式时,页面才显示“购买时长”参数,您可以根据业务需要选择购买时长。如果勾选“自动续费”,在“包年/包月”资源到期后,自动进行续费。 按月购买的实例:自动续费周期为1个月。 按年购买的实例:自动续费周期为1年。 单击“确认订单”,进入“确认配置”页面。 确认实例信息无误且阅读并同意《华为云用户协议》后,如果“计费模式”选择“包年/包月”,单击“去支付”。根据界面提示信息,支付费用。如果“计费模式”选择“按需付费”,单击“提交”。 在实例列表页面,查看RocketMQ实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 当实例的“状态”变为“创建失败”,请参考删除RocketMQ实例,删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。 创建失败的实例,不会占用其他资源。
  • 自定义购买RocketMQ实例 进入购买RocketMQ实例页面。 在“自定义购买”页签中,设置实例基础配置。 表8 实例基础配置参数说明 参数名称 说明 计费模式 RocketMQ实例的计费模式。 取值范围: 包年/包月:一种预付费模式,即先付费再使用,按照订单的购买周期进行结算。 按需付费:一种后付费模式,即先使用再付费,按照RocketMQ实例实际使用时长计费,秒级计费,按小时结算。 区域 不同区域的云服务产品之间内网互不相通。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 可用区 可用区指在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。 请根据实际情况选择可用区。RocketMQ实例创建成功后,不支持修改可用区。 设置实例规格信息。 表9 实例规格参数说明 参数名称 说明 规格选择模式 取值仅包含“默认”。 版本 RocketMQ的版本号。 取值包含“5.x”和“4.8.0”。 RocketMQ实例创建成功后,不支持修改版本号。 实例类型 RocketMQ实例的类型。 5.x版本取值包含“基础版”和“专业版”,4.8.0版本取值固定为“默认”。 说明: 专业版目前还处于公测阶段。 部署架构 根据需求选择“单机”或“集群”。4.8.0版本仅支持“集群”。 代理/实例规格 请根据业务需求选择相应的代理/实例规格。 5.x版本时,该参数显示为“实例规格”。 4.8.0版本时,该参数显示为“代理规格”。 请根据实际情况选择。 代理数量 选择代理数量。 4.8.0版本时才显示该参数。 单个代理存储空间/存储空间 存储空间用于存储消息(包括副本中的消息)、日志和元数据,建议根据业务消息体积、副本数量以及预留磁盘大小选择存储空间大小。 5.x版本时,该参数显示为“存储空间”。 4.8.0版本时,该参数显示为“单个代理存储空间”。 磁盘类型和磁盘大小根据实际需求进行设置。RocketMQ实例创建后,磁盘类型不支持修改。 磁盘类型支持高I/O、超高I/O、通用型SSD和极速型SSD。对于测试环境使用的RocketMQ实例,推荐选择高I/O磁盘。对于生产环境使用的RocketMQ实例,推荐选择通用型SSD及以上的磁盘规格。具体如何选择磁盘类型可以参考磁盘类型及性能介绍和磁盘类型对RocketMQ实例性能有什么影响?。 设置网络信息。 表10 实例网络参数说明 参数名称 说明 虚拟私有云 选择已经创建好的或共享的虚拟私有云。 虚拟私有云可以为您的RocketMQ实例构建隔离的、能自主配置和管理的虚拟网络环境。您可以单击右侧的“管理虚拟私有云”,跳转到网络控制台的“虚拟私有云”页面,查看或创建虚拟私有云。 RocketMQ实例创建完成后,不支持修改虚拟私有云。 子网 选择已经创建好的或共享的子网。 子网在RocketMQ实例创建完成后,不支持修改。 子网开启IPv6后,RocketMQ实例支持IPv6功能。 IPv6 子网开启IPv6后,页面才显示此参数。开启IPv6后,客户端可以使用IPv6地址连接RocketMQ实例。 RocketMQ实例创建完成后,不支持修改IPv6开关。 此功能仅在“华东二”区域上线。 使用内网IPv6方式连接实例需要通过VPC终端节点实现,使用期间会产生VPC终端节点的费用,收费标准请参考计费说明。 安全组 选择已经创建好的安全组。 安全组是一组对RocketMQ实例的访问规则的集合。您可以单击右侧的“管理安全组”,跳转到网络控制台的“安全组”页面,查看或创建安全组。 客户端连接RocketMQ实例前,请根据不同的连接方式配置对应的安全组规则,否则会连接失败。具体的安全组规则请参考表3。 设置实例访问方式。 表11 实例访问方式参数说明 参数名称 说明 公网访问 通过公网连接RocketMQ实例。 默认为关闭状态。开启公网访问后,还需要为RocketMQ实例设置对应的IPv4弹性IP地址。 加密方式 RocketMQ实例支持的接入加密方式。 取值范围: SSL:服务端与客户端之间通过密文传输,安全性较高,性能较低。 PLAINTEXT:服务端与客户端之间通过明文传输,安全性较低,性能较高。 PERMISSIVE:服务端与客户端之间即能通过明文传输又能通过密文传输,传输方式由客户端决定。 请根据实际情况选择。 设置高级配置。 表12 高级配置参数说明 参数名称 说明 实例名称 名称支持自定义,但需要符合命名规则:长度为4~64个字符,由英文字母开头,只能由英文字母、数字、中划线、下划线组成。 企业项目 该参数针对企业用户使用。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理,默认项目为default。 ACL访问控制 开启ACL访问控制可以对生产消息和消费消息进行权限管理。 关闭ACL访问控制后,将无法使用用户管理功能。 标签 标签用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 如您的组织已经设定分布式消息服务RocketMQ版的相关标签策略,则需按照标签策略规则为RocketMQ实例添加标签。标签如果不符合标签策略的规则,则可能会导致RocketMQ实例创建失败,请联系组织管理员了解标签策略详情。 如果您已经预定义了标签,在“标签键”和“标签值”中选择已经定义的标签键值对。另外,您可以单击“创建预定义标签”,跳转到标签管理服务页面,查看已经预定义的标签,或者创建新的标签。 您也可以直接单击“添加新标签”,在“标签键”和“标签值”中设置标签信息。 当前每个RocketMQ实例最多支持添加20个不同标签,标签的命名规格,请参考配置RocketMQ实例标签章节。 描述 设置实例的描述信息,长度为0~1024个字符。 设置实例购买时长。 当选择了“包年/包月”付费模式时,页面才显示“购买时长”参数,您可以根据业务需要选择购买时长。如果勾选“自动续费”,在“包年/包月”资源到期后,自动进行续费。 按月购买的实例:自动续费周期为1个月。 按年购买的实例:自动续费周期为1年。 在页面右侧“配置概要”中,查看已选择的实例配置。 确认配置无误后,单击“确认订单”,进入“确认配置”页面。 确认实例信息无误且阅读并同意《华为云用户协议》后,如果“计费模式”选择“包年/包月”,单击“去支付”。根据界面提示信息,支付费用。如果“计费模式”选择“按需付费”,单击“提交”。 在实例列表页面,查看RocketMQ实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 当实例的“状态”变为“创建失败”,请参考删除RocketMQ实例,删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。 创建失败的实例,不会占用其他资源。
  • 准备实例依赖资源 在购买RocketMQ实例前,您需要提前准备相关依赖资源,包括虚拟私有云(Virtual Private Cloud,以下简称VPC)、子网和安全组,并配置安全组策略。每个RocketMQ实例都部署在某个VPC中,并绑定具体的子网和安全组,通过这样的方式为RocketMQ提供一个隔离的、用户自主配置和管理的虚拟网络环境以及安全保护策略,提升实例的安全性。 RocketMQ实例所需资源的具体要求和创建指导如表1所示。 表1 RocketMQ实例依赖资源 准备资源 要求 创建指导 VPC和子网 RocketMQ实例可以使用当前账号下已创建的VPC和子网,也可以使用新创建的VPC和子网,还可以使用共享VPC和子网,请根据实际需要进行配置。 共享VPC是基于 资源访问管理 (Resource Access Manager,简称 RAM )服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 在创建VPC和子网时应注意如下要求: 创建的VPC与使用的RocketMQ实例应在相同的区域。 创建VPC和子网时,配置参数建议使用默认配置。 创建VPC和子网的操作指导请参考创建虚拟私有云和子网,若需要在已有VPC上创建和使用新的子网,请参考为虚拟私有云创建新的子网。 安全组 不同的RocketMQ实例可以重复使用相同的安全组,也可以使用不同的安全组,请根据实际需要进行配置。 使用RocketMQ实例必须添加表2或表3所示安全组规则,其他规则请根据实际需要添加。 创建安全组后,系统默认添加入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,此时使用内网通过同一个VPC访问RocketMQ实例,无需添加表2或表3的规则。 创建安全组的操作指导请参考创建安全组,为安全组添加规则的操作指导请参考添加安全组规则。 弹性IP地址 开启公网访问时,才需要配置弹性IP地址。 在创建弹性IP地址时,应注意如下要求: 创建的弹性IP地址与RocketMQ实例在相同的区域。 RocketMQ控制台无法识别开启IPv6转换功能的弹性IP地址。 创建弹性IP地址的操作指导请参考申请弹性公网IP。 表2 安全组规则(RocketMQ实例4.8.0版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 RocketMQ客户端所在的IP地址或地址段。 使用TCP协议,通过内网访问元数据节点的端口。 入方向 TCP 8200 使用TCP协议,通过公网访问元数据节点的端口。 入方向 TCP 10100-10199 使用TCP协议,访问业务节点的端口。 表3 安全组规则(RocketMQ实例5.x版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 RocketMQ客户端所在的IP地址或地址段。 使用TCP协议,通过内网访问实例的端口。 入方向 TCP 8200 使用TCP协议,通过公网访问实例的端口。 入方向 TCP 10100-10199 使用TCP协议,访问业务节点的端口。 入方向 TCP 8080 使用gRPC协议,通过内网访问实例的端口。 入方向 TCP 8081 使用gRPC协议,通过公网访问实例的端口。
  • 前提条件 已创建RocketMQ实例和Topic。 如果通过按Message ID查询,需要提前获取消息所在的Topic名称和消息的Message ID。 Message ID为生产消息后返回的MsgId,如6中返回的内容,也可先通过Topic查询消息,记录Message ID。 如果通过按Message Key查询,需要提前获取消息所在的Topic名称和消息的Message Key。 Message Key为7中配置的消息Key,也可先通过Topic查询消息,记录Message Key。
  • 消息清理机制 无论消息是否被消费,RocketMQ的消息默认保留时间为48小时,最长保留时间为720小时,修改保留时间的操作请参见修改RocketMQ消息保留时间。RocketMQ消息存储在CommitLog文件中,CommitLog文件大小为1GB,当一个CommitLog文件写满后,会生成一个新的CommitLog文件。RocketMQ删除消息是删除CommitLog文件,而不是删除一条消息。CommitLog文件为顺序写入,当最后写入的一条消息过期时,表示CommitLog文件过期。满足如下任意一个条件,CommitLog文件将会被清理: 每天凌晨4点会清理过期的文件,部分老实例由于未设置时区,清理时间为每天中午12点。 当磁盘使用率达到70%(针对4.8.0版本)或75%(针对5.x版本)时,会立刻清理过期的文件。 当磁盘使用率达到85%时,会从最早创建的文件开始清理,不管文件是否已过期,直到磁盘空间充足。
  • 前提条件 已购买RocketMQ实例。 准备一台Linux系统的主机,在主机中安装Java Development Kit 1.8.111或以上版本,并完成环境变量配置,具体操作可参见快速连接RocketMQ并生产消费消息。 准备网络环境。 RocketMQ实例分内网地址以及公网地址两种网络连接方式。如果使用公网地址,则消息生产与消费客户端需要有公网访问权限,并配置如表1所示安全组。 表1 安全组规则 方向 协议 端口 源地址 说明 入方向 TCP 8200 RocketMQ客户端所在的IP地址或地址段。 使用TCP协议,通过公网访问元数据节点的端口。 入方向 TCP 10100-10199 使用TCP协议,访问业务节点的端口。
  • DMS for RocketMQ请求条件 您可以在创建自定义策略时,通过添加“请求条件”(Condition元素)来控制策略何时生效。请求条件包括条件键和运算符,条件键表示策略语句的Condition元素,分为全局级条件键和服务级条件键。全局级条件键(前缀为g:)适用于所有操作,服务级条件键(前缀为服务缩写,如dms:)仅适用于对应服务的操作。运算符与条件键一起使用,构成完整的条件判断语句。 DMS for RocketMQ通过 IAM 预置了一组条件键,例如,您可以先使用dms:ssl条件键检查RocketMQ实例是否开启SSL,然后再允许执行操作。下表显示了适用于DMS for RocketMQ服务特定的条件键。 表1 DMS for RocketMQ请求条件 DMS for RocketMQ条件键 运算符 描述 dms:publicIP Bool Null 是否开启公网 dms:ssl Bool Null 是否开启SSL
  • 示例流程 图1 给用户授权DMS for RocketMQ权限流程 创建用户组并授权 在IAM控制台创建用户组,并授予DMS for RocketMQ的管理员权限“DMS ReadOnlyAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择分布式消息服务RocketMQ版分布式消息服务RocketMQ,进入RocketMQ实例主界面,单击右上角“购买RocketMQ实例”,尝试购买RocketMQ实例,如果无法购买RocketMQ实例(假设当前权限仅包含DMS ReadOnlyAccess),表示“DMS ReadOnlyAccess”已生效。 在“服务列表”中选择云硬盘(假设当前策略仅包含DMS ReadOnlyAccess),若提示权限不足,表示“DMS ReadOnlyAccess”已生效。
  • DMS for RocketMQ自定义策略样例 如果系统预置的DMS for RocketMQ权限,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(Action)请参考细粒度策略支持的授权项。 目前华为云支持以下两种方式创建自定义策略: 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。 JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。 具体创建步骤请参见:创建自定义策略。本章为您介绍常用的DMS for RocketMQ自定义策略样例。 DMS for RocketMQ的权限与策略基于分布式消息服务DMS,因此在IAM服务中为DMS for RocketMQ分配用户与权限时,请选择并使用“DMS”的权限与策略。 示例1:授权用户删除实例和重启实例 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "dms:instance:modifyStatus", "dms:instance:delete" ] } ] } 示例2:拒绝用户删除实例 拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。 如果您给用户授予DMS FullAccess的系统策略,但不希望用户拥有DMS FullAccess中定义的删除实例权限,您可以创建一条拒绝删除实例的自定义策略,然后同时将DMS FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对DMS for RocketMQ执行除了删除实例外的所有操作。拒绝策略示例如下: { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "dms:instance:delete" ] } ] }
  • 连接RocketMQ网络要求 客户端可以通过公网连接RocketMQ实例,也可以通过内网连接RocketMQ实例。使用内网连接时,注意以下几点: 如果客户端和RocketMQ实例部署在同一个VPC内,网络默认互通。 如果客户端和RocketMQ实例部署在不同VPC中,由于VPC之间逻辑隔离,客户端和RocketMQ实例不能直接通信,需要打通VPC之间的网络。 客户端连接RocketMQ实例的方式如表1所示。 表1 连接方式说明 连接方式 实现方式 参考文档 公网连接 在RocketMQ控制台开启公网访问,配置弹性公网IP,客户端通过弹性公网IP访问RocketMQ实例。 配置RocketMQ实例的公网访问 内网连接 客户端和RocketMQ实例部署在同一个VPC中,此时网络默认互通。 - 客户端和RocketMQ实例部署在同一个Region的不同VPC中,利用VPC对等连接将两个VPC间的网络打通,实现跨VPC访问。 对等连接 客户端连接RocketMQ实例前,需要放通如下安全组,否则会连接失败。 创建安全组后,系统默认添加入方向“允许安全组内的彼此通信”规则和出方向“放通全部流量”规则,此时使用内网通过同一个VPC访问RocketMQ实例,无需添加表2和表3的规则。 表2 安全组规则(RocketMQ实例4.8.0版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 RocketMQ客户端所在的IP地址或地址段。 使用TCP协议,通过内网访问元数据节点的端口。 入方向 TCP 8200 使用TCP协议,通过公网访问元数据节点的端口。 入方向 TCP 10100-10199 使用TCP协议,访问业务节点的端口。 表3 安全组规则(RocketMQ实例5.x版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 RocketMQ客户端所在的IP地址或地址段。 使用TCP协议,通过内网访问实例的端口。 入方向 TCP 8200 使用TCP协议,通过公网访问实例的端口。 入方向 TCP 10100-10199 使用TCP协议,访问业务节点的端口。 入方向 TCP 8080 使用gRPC协议,通过内网访问实例的端口。 入方向 TCP 8081 使用gRPC协议,通过公网访问实例的端口。 父主题: 配置RocketMQ网络连接
  • (可选)为用户设置Topic/消费组权限 5.x基础版不支持此操作。 创建用户时会设置默认的Topic和消费组权限,如果需要修改默认权限,则可以在此处重新为用户设置。管理员默认具有所有权限,无需手动添加。 单击用户名称,进入用户详情页面。 在“Topic权限”/“消费组权限”页签中,单击添加权限,弹出“添加权限”对话框。 勾选需要添加权限的Topic或者消费组,选择所需的特殊权限,单击“确定”。 指定Topic或者消费组的特殊权限会覆盖默认权限,如图1中,test01的实际权限为发布+订阅。 图1 用户详情页面
  • 准备环境 执行以下命令,检查是否已安装Go。 go version 返回如下回显时,说明Go已经安装。 go version go1.16.5 linux/amd64 如果未安装Go,请下载并安装。 在“go.mod”中增加以下代码,添加依赖。 module rocketmq-example-go go 1.13 require ( github.com/apache/rocketmq-clients/golang/v5 )
  • 准备环境 执行以下命令,检查是否已安装Go。 go version 返回如下回显时,说明Go已经安装。 go version go1.16.5 linux/amd64 如果未安装Go,请下载并安装。 进入Go脚本所在的bin目录下。 执行“touch go.mod”命令新建一个“go.mod”,并增加以下代码,添加依赖。 module rocketmq-example-go go 1.13 require ( github.com/apache/rocketmq-client-go/v2 v2.1.2 ) 执行如下命令增加代理。 export GOPROXY=https://goproxy.cn,direct 执行如下命令下载依赖。 go mod tidy
  • 注意事项 定时消息的最大延迟时间为1年,延迟超过1年的消息将会发送失败。 定时消息的定时时间如果被设置成当前时间戳之前的某个时刻,消息将立刻投递给消费者。 在理想情况下,定时消息设定的时间与实际发送时间的误差在0.1s以内。但在定时消息投递压力过大时,会触发定时消息投递流控机制,精度会变差。 在0.1s的精度内,不保证消息投递的顺序性。即如果两条定时消息的定时时间差距小于0.1s,他们投递的顺序与他们发送的顺序无法确保一致。 无法确保定时消息仅投递一次,定时消息可能会重复投递。 定时消息的定时时间是服务端开始向消费端投递的时间。如果消费者当前有消息堆积,那么定时消息会排在堆积消息后面,将不能严格按照配置的时间进行投递。 由于客户端和服务端可能存在时间差,消息的实际投递时间与客户端设置的投递时间之间可能存在偏差,以服务端时间为准。 设置定时消息的投递时间后,依然受消息老化时间限制,默认消息老化时间为2天。例如,设置定时消息5天后才能被消费,如果第5天后一直没被消费,那么这条消息将在第7天被删除。 定时消息将占用普通消息约3倍的存储空间,大量使用定时消息时需要注意存储空间占用。
  • 发送定时消息 发送定时消息的示例代码如下(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 package main import ( "context" "fmt" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/primitive" "github.com/apache/rocketmq-client-go/v2/producer" "os" ) func main() { p, _ := rocketmq.NewProducer( producer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), producer.WithRetry(2), ) err := p.Start() if err != nil { fmt.Printf("start producer error: %s", err.Error()) os.Exit(1) } msg := primitive.NewMessage("test", []byte("Hello RocketMQ Go Client!")) msg.WithProperty("__STARTDELIVERTIME", strconv.FormatInt(time.Now().UnixMilli()+3000, 10)) res, err := p.SendSync(context.Background(), msg) if err != nil { fmt.Printf("send message error: %s\n", err) } else { fmt.Printf("send message success: result=%s\n", res.String()) } err = p.Shutdown() if err != nil { fmt.Printf("shutdown producer error: %s", err.Error()) } } 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 192.168.0.1:8100:表示实例连接地址和端口。 test:表示Topic名称。