云服务器内容精选

  • 方式二:使用RabbitMQ WebUI删除 登录RabbitMQ WebUI。 在顶部导航栏选择“Admin”,进入Admin页面。 在右侧导航栏选择“Virtual Hosts”,进入Virtual Hosts页面。 图1 Virtual Hosts页面 单击待删除的Vhost名称,进入Vhost详情页。 图2 待删除的Vhost 在“Delete this vhost”区域,单击“Delete this virtual host”,弹出确认删除对话框。 图3 删除Vhost 单击“确定”,完成Vhost的删除。
  • 方式三:调用API删除 在Linux中,连接RabbitMQ实例。 执行以下命令,删除Vhost。 curl -i -X DELETE http://${USERNAME}:${PASSWORD}@${HOST}:${PORT}/api/vhosts/${VHOST_NAME} 参数说明如下: USERNAME:创建RabbitMQ实例时,设置的用户名。在实例详情页的“连接信息”区域,查看用户名。 PASSWORD:创建RabbitMQ实例时,设置的密码。如果忘记密码,参考重置实例密码,重新设置密码。 HOST:WebUI的地址。在实例详情页的“连接信息”区域,查看Web界面UI地址。 PORT:WebUI的端口号。在实例详情页的“连接信息”区域,查看Web界面UI地址中的端口号。 VHOST_NAME:待删除Vhost的名称。 示例如下: curl -i -X DELETE http://root:txxxt@192.168.1.3:15672/api/vhosts/vhost-demo 删除成功后,回显如下所示。 图4 Vhost删除成功
  • 准备依赖资源 RabbitMQ实例所需资源的具体要求和创建指导如表1所示。 表1 RabbitMQ实例依赖资源 准备资源 要求 创建指导 VPC和子网 RabbitMQ实例可以使用当前账号下已创建的VPC和子网,也可以使用新创建的VPC和子网,还可以使用共享VPC和子网,请根据实际需要进行配置。 共享VPC是基于资源访问管理(Resource Access Manager,简称RAM)服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 在创建VPC和子网时应注意如下要求: 创建的VPC与RabbitMQ实例在相同的区域。 创建VPC和子网时,配置参数建议使用默认配置。 创建VPC和子网的操作指导请参考创建虚拟私有云和子网,若需要在已有VPC上创建和使用新的子网,请参考为虚拟私有云创建新的子网。 安全组 不同的RabbitMQ实例可以重复使用相同的安全组,也可以使用不同的安全组,请根据实际需要进行配置。 使用RabbitMQ实例前,添加表2所示安全组规则,其他规则请根据实际需要添加。 说明: 创建安全组后,系统默认添加入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,此时使用内网通过同一个VPC访问RabbitMQ实例,无需添加表2的规则。 创建安全组的操作指导请参考创建安全组,为安全组添加规则的操作指导请参考添加安全组规则。 弹性IP地址 在创建弹性IP地址时,应注意如下要求: 创建的弹性IP地址与RabbitMQ实例在相同的区域。 弹性IP地址的数量必须与RabbitMQ实例的代理个数相同。 RabbitMQ控制台无法识别开启IPv6转换功能的弹性IP地址。 创建弹性IP地址的操作指导请参考申请弹性公网IP。 表2 安全组规则 方向 协议 端口 源地址 说明 入方向 TCP 5672 0.0.0.0/0 访问RabbitMQ实例(关闭SSL加密) 入方向 TCP 5671 0.0.0.0/0 访问RabbitMQ实例(开启SSL加密) 入方向 TCP 15672 0.0.0.0/0 访问Web界面UI地址(关闭SSL加密) 入方向 TCP 15671 0.0.0.0/0 访问Web界面UI地址(开启SSL加密)
  • 约束与限制 2020年7月1日之前购买的RabbitMQ实例,不支持在控制台开启插件,如果需要开启,请在控制台提工单,技术人员在后台开启插件。 2020年11月14日之前购买的RabbitMQ实例,不支持在控制台开启rabbitmq_consistent_hash_exchange插件,如果需要开启,请在控制台提工单,技术人员在后台开启插件。 开启插件过程中,不会重启实例。 rabbitmq_shovel和rabbitmq_federation插件在特定场景下才支持开启,具体如表2所示。 表2 支持开启插件的场景 实例 rabbitmq_shovel rabbitmq_federation 未开启SSL的单机实例 支持 支持 已开启SSL的单机实例 不支持 不支持 未开启SSL的集群实例 不支持 支持 已开启SSL的集群实例 不支持 不支持
  • 操作场景 本章节主要介绍删除Queue的操作,有以下几种方式,您可以根据实际情况选择任意一种方式: 方法一:在控制台删除Queue:在RabbitMQ控制台删除队列 方法二:在WebUI页面删除单个队列:在WebUI页面的“Queues”页签中,删除单个队列。 方法三:通过Policy批量删除队列:新增与待删除队列的前缀名称相同、且队列过期时间(TTL)为1毫秒的策略,通过此策略实现批量删除队列。 方法四:调用API删除单个队列:在RabbitMQ实例未开启SSL时,通过调用API删除单个队列。 方法五:调用API批量删除队列:在RabbitMQ实例未开启SSL时,通过编写Shell脚本循环调用API执行删除命令,实现批量删除队列。 删除Queue后,该Queue下的所有配置将会被删除,且无法恢复,请谨慎操作。
  • 方法四:调用API删除单个队列 在RabbitMQ实例未开启SSL时,通过调用API删除单个队列。 在Linux系统中连接RabbitMQ实例,具体步骤请参考连接未开启SSL的RabbitMQ实例。 执行以下命令删除单个队列。 curl -i -XDELETE http://${USERNAME}:${PASSWORD}@${HOST}:${PORT}/api/queues/${VHOST_NAME}/${QUEUE_NAME} 参数说明如下: USERNAME:创建实例时设置的用户名。 PASSWORD:创建实例时设置的密码,如果忘记密码,参考重置实例密码,重新设置密码。 HOST:在实例详情页,查看Web界面UI地址。 PORT:在实例详情页,查看Web界面UI端口号。 VHOST_NAME:Vhost名称,默认为“/”,在命令中设置为“%2F”。 QUEUE_NAME:待删除队列的名称。 示例如下: curl-i -XDELETE http://test:Zsxxxdx@192.168.0.241:15672/api/queues/%2F/hello 删除成功后,回显如下: 图5 删除队列成功 您还可以在WebUI页面的“Queues”页签,查看队列是否成功删除。
  • 方法五:调用API批量删除队列 在RabbitMQ实例未开启SSL时,通过编写Shell脚本循环调用API执行删除命令,实现批量删除队列。 在Linux系统中连接RabbitMQ实例,具体步骤请参考连接未开启SSL的RabbitMQ实例。 创建“delete_queues.sh”脚本文件。 touch delete_queues.sh 执行以下命令,编辑脚本。 vim delete_queues.sh 将以下内容复制到脚本中,其中USERNAME、PASSWORD、HOST和QUEUES_LIST的值,请根据实际情况修改。 #!/usr/bin/env bash USERNAME=root PASSWORD=Zsxxxdx HOST=192.168.0.241 PORT=15672 VHOST='%2F' QUEUES_LIST="test1 test2 test3"; for QUEUE_NAME in $QUEUES_LIST : do curl -i -XDELETE http://$USERNAME:$PASSWORD@$HOST:$PORT/api/queues/$VHOST/$QUEUE_NAME done 参数说明如下: USERNAME:创建实例时设置的用户名。 PASSWORD:创建实例时设置的密码,如果忘记密码,参考重置实例密码,重新设置密码。 HOST:在实例详情页,查看Web界面UI地址。 PORT:在实例详情页,查看Web界面UI端口号。 VHOST:Vhost名称,默认为“/”,在命令中设置为“%2F”。 QUEUES_LIST:待删除队列的名称,队列名称之间使用空格隔开。 保存脚本内容。 对脚本进行授权。 chmod 777 delete_queues.sh 执行脚本。 sh delete_queues.sh 删除成功后,回显如下: 图6 批量删除队列成功 您还可以在WebUI页面的“Queues”页签,查看队列是否成功删除。
  • 操作步骤 进入购买RabbitMQ实例页面。 选择“计费模式”、“区域”、“项目”和“可用区”。 设置“实例名称”和“企业项目”。 设置实例信息。 版本:RabbitMQ的版本号,当前仅支持RabbitMQ 3.8.35。 部署架构:支持“单机”和“集群”。 单机:表示部署一个RabbitMQ代理。 集群:表示部署多个RabbitMQ代理,实现高可靠的消息存储。 CPU架构:保持默认值即可。 代理规格:根据实际情况选择规格。 为了保证服务的稳定可靠,RabbitMQ采用了默认的40%高水位配置。当内存占用率到达40%后,可能会触发内存高水位,内存高水位会触发流控,导致生产者发送消息被阻塞。为了避免高水位的产生,请及时消费积压在队列中的消息。 代理数量:根据实例情况选择代理个数。 单个代理存储空间:选择RabbitMQ实例的磁盘类型和储存空间总量。 如何选择磁盘类型请参考磁盘类型及性能介绍。 单机实例的取值范围:100GB~30000GB。 集群实例的取值范围:代理数*(100GB~30000GB)。 虚拟私有云:选择已经创建好的虚拟私有云和子网。 虚拟私有云可以为您的RabbitMQ实例构建隔离的、能自主配置和管理的虚拟网络环境。 安全组:选择已经创建好的安全组。 安全组是一组对RabbitMQ实例的访问规则的集合。您可以单击右侧的“管理安全组”,跳转到网络控制台的安全组页面,查看或创建安全组。 设置“SSL”。 客户端连接实例时SSL认证的开关。开启SSL,则数据加密传输,安全性更高。 SSL开关在实例创建完成后不支持修改,请明确是否需要开启。 图1 设置实例信息 设置连接RabbitMQ实例的用户名和密码。 设置实例购买时长。 当选择了“包年/包月”计费模式时,页面才显示“购买时长”参数,您需要根据业务需要选择。 单击“更多配置”,设置更多相关信息。 设置“公网访问”。 您可以选择是否打开公网访问开关。 如果选择了开启,表示访问RabbitMQ实例可以通过弹性IP访问。这时页面会显示“弹性IP地址”,在“弹性IP地址”区域,您可下拉选择已有的弹性IP。另外,您可单击右侧的“创建弹性IP”,跳转到网络控制台的弹性公网IP页面,购买弹性公网IP。 图2 购买RabbitMQ实例时公网访问设置 公网访问与VPC内访问相比,可能存在网络丢包和抖动等情况,且访问时延有所增加,因此建议仅在业务开发测试阶段开启公网访问进行调试。 如果用户在虚拟私有云的服务页面手动解绑定或删除EIP,相应RabbitMQ实例的公网访问功能会自动关闭。 设置“标签”。 标签用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 如您的组织已经设定分布式消息服务RabbitMQ版的相关标签策略,则需按照标签策略规则为RabbitMQ实例添加标签。标签如果不符合标签策略的规则,则可能会导致RabbitMQ实例创建失败,请联系组织管理员了解标签策略详情。 如果您已经预定义了标签,在“标签键”和“标签值”中选择已经定义的标签键值对。另外,您可以单击右侧的“查看预定义标签”,系统会跳转到标签管理服务页面,查看已经预定义的标签,或者创建新的标签。 您也可以直接在“标签键”和“标签值”中设置标签。 当前每个RabbitMQ实例最多支持设置20个不同标签,标签的命名规格,请参考管理实例标签章节。 设置实例的描述信息。 填写完上述信息后,单击“立即购买”,进入“规格确认”页面。 确认实例信息无误且阅读并同意《华为云用户协议》后,如果“计费模式”选择“包年/包月”,单击“去支付”。根据界面提示信息,支付费用。如果“计费模式”选择“按需付费”,单击“提交”。 在实例列表页面查看实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 当实例的“状态”变为“创建失败”,请参考删除实例,删除创建失败的RabbitMQ实例,然后重新购买。如果重新购买仍然失败,请联系客服。
  • 操作场景 RabbitMQ实例采用物理隔离的方式部署,租户独占RabbitMQ实例。支持用户自定义规格和自定义特性,您可以根据业务需要定制相应计算能力和存储空间的RabbitMQ实例。 RabbitMQ是一款基于AMQP协议的开源服务,用于在分布式系统中存储转发消息,服务器端用Erlang语言(支持高并发、分布式以及健壮的容错能力等特点)编写,支持多种语言的客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP、AJAX等。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层的一个开放标准协议。
  • 使用限制 单账号跟踪的事件可以通过云审计控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的CTS/system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到对象存储服务(OBS),才可在OBS桶里面查看历史文件。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。
  • RabbitMQ实例的存储空间估算参考 在集群模式中,RabbitMQ需要对消息持久化写入到磁盘中,因此,您在创建RabbitMQ实例选择存储空间时,建议根据业务消息体积预估以及镜像队列副本数量选择合适的存储空间。镜像队列副本数最大为集群的代理数。 例如:业务消息体积预估100GB,则磁盘容量最少应为100GB*镜像队列副本数+预留磁盘大小100GB。 如果是单机实例,则是计算业务消息体积+预留磁盘大小即可。 当前RabbitMQ实例支持修改集群实例的代理个数,您可以根据业务情况,随时更改集群代理个数。单机实例暂不支持变更规格。
  • RabbitMQ实例规格 RabbitMQ实例兼容开源RabbitMQ 3.8.35,实例类型包括单机和集群,实例规格请参考表1。 表1 RabbitMQ集群实例规格(3.8.35版本) 型号 代理数 存储空间范围(GB) TPS参考值 单个代理最大消费者数 单个代理建议队列数 单个代理最大连接数 rabbitmq.2u4g.cluster 3 300~90000 3000 4000 100 1000 5 500~150000 5000 4000 100 1000 7 700~210000 7000 4000 100 1000 rabbitmq.4u8g.cluster 3 300~90000 6000 8000 200 2000 5 500~150000 10000 8000 200 2000 7 700~210000 14000 8000 200 2000 rabbitmq.8u16g.cluster 3 300~90000 12000 16000 400 4000 5 500~150000 20000 16000 400 4000 7 700~210000 28000 16000 400 4000 rabbitmq.12u24g.cluster 3 300~90000 24000 24000 600 6000 5 500~150000 40000 24000 600 6000 7 700~210000 56000 24000 600 6000 rabbitmq.16u32g.cluster 3 300~90000 48000 32000 800 8000 5 500~150000 80000 32000 800 8000 7 700~210000 112000 32000 800 8000 rabbitmq.24u48g.cluster 3 300~90000 60000 40000 1000 10000 5 500~150000 100000 40000 1000 10000 7 700~210000 140000 40000 1000 10000 rabbitmq.32u64g.cluster 3 300~90000 72000 40000 1000 10000 5 500~150000 120000 40000 1000 10000 7 700~210000 168000 40000 1000 10000 为了保证稳定性,服务端限制了单条消息的最大长度为50MB,请勿发送大于此长度的消息。 上表中TPS,是指以2K大小的消息为例的每秒处理消息条数,测试场景为不开启持久化的非镜像队列,实时生产实时消费,队列无积压。此数据仅供参考,生产使用需要以实际压测性能为准。 服务端的性能主要跟以下因素相关:队列数、消息堆积、连接数、channel、消费者数、镜像队列、优先级队列、消息持久化和exchange类型等,在选择实例规格时,请根据业务模型压测结果选择。 一条连接最多可以开启2047个channel。 单机版实例可用于测试场景,不建议用于生产业务,暂不提供单机版实例的产品规格。
  • 新老规格对应关系 2种RabbitMQ实例规格对比,新老规格的对应关系如所示。 表2 RabbitMQ实例新老规格对应关系 老规格 对应的新规格 规格类型 TPS参考值 规格类型 TPS参考值 4核 | 8GB * 3 3000 rabbitmq.4u8g.cluster * 3 6000 8核 | 16GB * 3 6000 rabbitmq.8u16g.cluster * 3 12000 16核 | 32GB * 3 24000 rabbitmq.16u32g.cluster * 3 48000 新老规格区别如下: 新规格性能更好,同等价格下性价比更优。 老规格使用的非独享资源,在高负载情况下容易出现资源抢占情况。新规格使用的独占资源,性能更优、稳定性更好。 新规格支持灵活的水平/垂直动态扩容,能更好的应对复杂的业务变化情况。 新规格支持更大规格的,最大可以支持rabbitmq.32u64g.cluster。 新规格除了原有的磁盘类型,还支持通用型SSD、极速型SSD等多种磁盘类型,客户选择更加灵活。
  • 与Kafka、RocketMQ的差异 表1 功能差异 功能项 RocketMQ Kafka RabbitMQ 优先级队列 不支持 不支持 支持。建议优先级大小设置在0-10之间。 延迟队列 支持 不支持 不支持 死信队列 支持 不支持 支持 消息重试 支持 不支持 不支持 消费模式 支持客户端主动拉取和服务端推送两种方式 客户端主动拉取 支持客户端主动拉取以及服务端推送两种模式 广播消费 支持 支持 支持 消息回溯 支持 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。 消息堆积 支持 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。 支持 持久化 支持 支持 支持 消息追踪 支持 不支持 不支持 消息过滤 支持 支持 不支持,但可以自行封装。 多租户 支持 不支持 支持 多协议支持 兼容RocketMQ协议 只支持Kafka自定义协议。 RabbitMQ基于AMQP协议实现,同时支持MQTT、STOMP等协议。 跨语言支持 支持多语言的客户端 采用Scala和Java编写,支持多种语言的客户端。 采用Erlang编写,支持多种语言的客户端。 流量控制 待规划 支持client和user级别,通过主动设置可将流控作用于生产者或消费者。 RabbitMQ的流控基于Credit-Based算法,是内部被动触发的保护机制,作用于生产者层面。 消息顺序性 单队列(queue)内有序 支持单分区(partition)级别的顺序性。 不支持。需要单线程发送、单线程消费并且不采用延迟队列、优先级队列等一些高级功能整体配合,才能实现消息有序。 安全机制 支持SSL认证 支持SSL、SASL身份认证和读写权限控制。 支持SSL认证 事务性消息 支持 支持 支持
  • 版本生命周期 分布式消息服务RabbitMQ版的版本生命周期如表1所示。 表1 版本生命周期 消息引擎类型 版本名称 状态 EOM时间 EOS时间 RabbitMQ 3.7.17 EOM 2022年下半年 2024年10月31日 3.8.35 在售 2025年下半年 2027年下半年 EOM:End of Marketing,停止该版本的销售。 EOS:End of Service & support,停止该版本的服务,建议您在执行作业时选择最新版本的引擎。在该日期之后,不再提供该软件版本的任何技术服务支持。