云主机开年特惠28.8元/年,0元秒杀等你来抢!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 天翼云新春焕新季 NEW 云主机开年特惠28.8元/年,0元秒杀等你来抢!
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 出海产品促销专区 NEW 爆款云主机低至2折,高性价比,不限新老速来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
  • MCP市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
模型推理服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V3.1
  • DeepSeek-R1-0528
  • DeepSeek-V3-0324
  • Qwen3-235B-A22B
  • Qwen3-32B
智算一体机
  • 智算一体机
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场进入AI Store创新解决方案公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 安全邮箱
  • WPS 365 天翼云版
  • 天翼企业云盘(标准服务版)
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      消息队列RabbitMQ版_相关内容
      • 典型应用场景
        系统解耦 以电商秒杀、抢购等流量短时间内暴增场景为例,传统做法是,用户下单后,订单系统发送查询请求到库存系统,等待库存系统返回请求结果给订单系统。如果库存系统发生故障,订单系统获取不到数据,订单失败。这种情况下,订单系统和库存系统是两个高耦合的子系统。 图4 系统高耦合 引入RabbitMQ消息队列,当用户下单后,将消息写入到RabbitMQ消息队列中,然后返回用户下单成功。 库存系统订阅下单的消息,消费下单消息,然后进行库操作。即使库存系统出现故障,也不影响用户下单。 图5 系统解耦 高可用 普通队列,由于队列以及队列内容仅存储在单代理上,当该代理故障后,对应的队列不可用。 RabbitMQ引入镜像队列机制,镜像队列是开源RabbitMQ 2.6.0版本新增的一个功能,允许集群将队列镜像到其他代理上,当集群某一代理宕机后,队列能自动切换到镜像中的其他代理,保证服务的可用性。 RabbitMQ引入仲裁队列机制,仲裁队列是开源RabbitMQ 3.8版本新增的一个功能,提供队列复制的能力,当集群某一代理宕机后,队列依旧可以正常运行,保证服务的可用性。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        产品简介
        典型应用场景
      • 基于事件流实现RabbitMQ消息路由
        本文介绍如何应用事件总线EventBridge的事件流功能实现分布式消息服务RabbitMQ的消息路由。 前提条件 开通事件总线EventBridge并授权。 开通分布式消息服务RabbitMQ并开通实例。 背景信息 事件流作为更轻量、实时端到端的流式事件通道,提供轻量级的流式数据的过滤和转换的能力,在不同的数据仓库之间、数据处理程序之间、数据分析和处理系统之间进行数据同步。源端分布式消息服务RabbitMQ生产的消息可以通过事件流这个通道被路由到目标端的分布式消息服务RabbitMQ。 步骤一:创建事件流 1. 登录事件总线EventBridge控制台。 2. 在左侧导航栏,单击事件流。 3. 在事件流页面,单击创建事件流。 4. 在创建事件流面板,设置任务名称和描述,配置以下参数,然后单击保存。 a.在Source(源) 配置向导,选择数据提供方为分布式消息服务RabbitMQ,设置以下参数,然后单击下一步。 参数 说明 示例 RabbitMQ实例 选择分布式消息服务RabbitMQ实例。 instancexxx RabbitMQ vhost 选择分布式消息服务RabbitMQ vhost。 / RabbitMQ queue 选择分布式消息服务RabbitMQ queue。 queuexxx b.在Filtering(过滤)配置向导,设置事件过滤规则,单击下一步。 c.在Sink(目标) 配置向导,选择服务类型为分布式消息服务RabbitMQ,配置以下参数,单击保存,如图1所示。 图1 创建事件流时源的类型选择分布式消息服务RabbitMQ 参数 说明 示例 实例 选择分布式消息RabbitMQ实例。 instancexxx Vhost 选择RabbitMQ实例的Vhost。 POST 目标类型 选择发送到RabbitMQ的目标类型。 1. 交换器:通过选择交换器和路由键,事件带上路由键会发送到所选择交换器。 2. 队列:事件会发送到目标队列。 队列 queuexxx 消息体 选择作为消息体的事件内容,更多参考“事件内容转换”。 完整事件 MessageId 选择MessageId的内容,更多参考“事件内容转换”。 空 自定义属性 选择自定义属性(Properties)的内容,更多参考“事件内容转换”。 空 创建事件流后,会有30秒~60秒的延迟时间,您可以在事件流页面的状态栏查看启动进度。
        来自:
        帮助文档
        事件总线
        最佳实践
        基于事件流实现消息路由
        基于事件流实现RabbitMQ消息路由
      • 仪表盘
        使用场景 RabbitMQ仪表盘支持实时监控消息流、排查生产消费异常、配置与维护队列 / 交换机 / 绑定、权限管理及集群状态查看,是 RabbitMQ 运维与开发调试的核心工具。 指标说明 指标 指标含义 可消费消息数 队列中已经准备好等待消费者去获取和处理的消息数量。 连接数 当前与 RabbitMQ 服务器建立的 TCP 连接总数。每个生产者或消费者客户端都需要与 RabbitMQ 建立一个 TCP 连接。 信道数 在所有 TCP 连接上打开的 AMQP 信道总数。信道是在 TCP 连接内部建立的虚拟连接,用于多路复用,以减少建立和关闭 TCP 连接的开销。 消费者数 当前所有队列上注册的消费者总数。一个消费者可以监听一个或多个队列。 交换器生产速率 单位时间内发送到某个交换器的消息数量。 交换器消费速率 单位时间内从某个交换器路由到其绑定队列的消息数量。 队列生产速率 单位时间内发送到某个队列的消息数量。 队列消费速率 单位时间内从某个队列成功投递给消费者并收到确认(ACK)的消息数量。 队列可消费消息数 某个队列中当前处于 "Ready" 状态的消息数量。 队列消费者数 当前正在监听某个队列的消费者数量。 VHost连接数 当前连接到某个特定 VHost 的 TCP 连接总数。 VHost信道数 当前在某个特定 VHost 的所有连接上打开的信道总数。 VHost每个连接的信道数 某个 VHost 的信道总数除以其连接总数得到的平均值。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        仪表盘
      • 路由到分布式消息服务RabbitMQ
        结果验证 1. 使用事件源触发一个事件事件。 2. 您可以在分布式消息RabbitMQ 控制台确认是否接收到事件。 1. 登录分布式消息服务RabbitMQ控制台,然后在左侧导航栏选择实例列表。 2. 在实例列表页面单击目标实例名称。 3. 在选择队列管理,进入目标队列详情,进入消息消费拨测页面。 4. 在消息查询页面,点击消费即可查看消息内容, 如图2所示。 图2 在分布式消息服务RabbitMQ管理控制台中查看消息详情
        来自:
        帮助文档
        事件总线
        用户指南
        事件流
        事件目标
        路由到分布式消息服务RabbitMQ
      • 分布式消息服务RabbitMQ事件目标
        结果验证 1. 使用事件总线发布消息功能,发送一个自定义事件。 2. 您可以在分布式消息RabbitMQ 控制台确认是否接收到事件,如图2所示。 1. 登录分布式消息服务RabbitMQ控制台,然后在左侧导航栏选择实例列表。 2. 在实例列表页面单击目标实例名称。 3. 在选择队列管理,进入目标队列详情,进入消息消费拨测页面。 4. 在消息查询页面,点击消费即可查看消息内容。 图2 在分布式消息服务RabbitMQ管理控制台中查看消息详情
        来自:
        帮助文档
        事件总线
        用户指南
        事件总线
        事件规则
        事件目标
        目标服务类型
        分布式消息服务RabbitMQ事件目标
      • 实例类
        RabbitMQ实例是否支持持久化,如何定时备份数据? RabbitMQ支持消息数据持久化,可从客户端连接RabbitMQ并设置消息持久化,也可在RabbitMQ集群管理工具界面创建队列时设置消息持久化。 不支持客户自定义定时备份数据,或从界面触发备份数据。 RabbitMQ实例开启SSL后,证书怎么获取? RabbitMQ实例开启SSL后只做单向认证,不需要证书。 RabbitMQ实例的SSL开关是否支持修改? 不支持动态修改,即如果实例创建时没有选择开启,创建完成之后,不支持修改,建议在实例创建时将开关打开。 RabbitMQ实例是否支持扩容? 单机版本的RabbitMQ实例支持扩大存储空间,以及扩容代理规格,暂不支持缩容。 集群版本的RabbitMQ实例支持扩大存储空间和代理个数,以及扩容代理规格,暂不支持缩容。 如何清空队列数据? 1. 登录Web UI。 2. 在“Queues”页签,单击需要清空数据的队列名称,进入队列详情页面。 3. 单击“Purge Messages”,清空队列数据。 RabbitMQ支持双向认证吗? 不支持。 RabbitMQ支持升级CPU和内存吗? RabbitMQ支持扩容/缩容代理规格,具体请参见变更实例规格。 如何关闭RabbitMQ的WebUI? 创建RabbitMQ实例后,如果想要关闭RabbitMQ的WebUI,只要您在安全组入方向中不开放15672端口(实例未开启SSL时的端口)或者15671(实例开启SSL时的端口),此时就无法登录WebUI界面。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        常见问题
        实例类
      • 安全方案
        数据保护技术 RabbitMQ提供了多种数据保护技术,以确保数据在传输和存储过程中的机密性和完整性。 1. 跨AZ容灾:在不同的可用区部署多个RabbitMQ节点,确保节点之间的数据复制和同步。这样,当一个可用区发生故障时,其他可用区上的节点可以继续提供服务。 2. 副本冗余:RabbitMQ副本冗余是一种保证消息队列的高可用性和数据冗余的策略。通过在多个节点上创建副本,可以确保即使一个节点发生故障,其他节点上的副本仍然可以提供服务。 3. 数据持久化:RabbitMQ数据持久化是通过将队列、消息和交换器进行持久化,确保消息队列中的数据在节点重启或故障时不会丢失。 服务韧性 RabbitMQ服务的韧性是指其在面对各种故障和异常情况时能够保持可用性和可靠性的能力。以下是保障RabbitMQ服务韧性的关键方面: 1. AZ内实例容灾:在不同的可用区内部署多个RabbitMQ节点,使它们能够相互复制和同步消息。这样即使一个可用区发生故障,其他可用区的节点仍然可以提供服务。 2. 数据容灾:RabbitMQ数据容灾是通过持久化消息、队列和交换器、备份和复制以及高可用性集群等策略,保护数据免受损失和故障影响的措施。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        产品简介
        安全方案
      • RabbitMQ消息持久化
        本文主要介绍分布式消息服务RabbitMQ的消息持久化最佳实践。 使用场景 默认情况下,RabbitMQ生产者生产的消息存储在内存中,当节点宕机或重启时,如何确保消息不丢失呢?RabbitMQ通过持久化机制实现,持久化包括Exchange持久化、Queue持久化和Message持久化。持久化是将内存中的消息写入到磁盘中,以防异常情况导致内存中的消息丢失。但是磁盘的读写速度远不如内存,开启消息持久化后,RabbitMQ的性能会下降。与惰性队列不同,持久化消息会在磁盘和内存中各存储一份,只有在内存空间不够时,才会将内存中的消息删除,存储到磁盘中。 说明 非持久化队列、Exchange在重启之后会丢失。 非持久化消息在重启之后会丢失(经过持久化队列/Exchange的消息不会自动变为持久化消息)。 持久化消息在尚未完成持久化时,如果服务器重启,消息会丢失。 设置Exchange持久化 在RabbitMQ的Web界面创建Exchange时,设置“durable”为“true”,如图1所示,设置成功后如图2所示。 图1 设置Exchange持久化 图2 持久化的Exchange
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        最佳实践
        RabbitMQ消息持久化
      • 仲裁队列
        介绍分布式消息服务RabbitMQ仲裁队列功能。 使用场景 仲裁队列(Quorum Queue)是基于Raft一致性协议实现的一种新型的分布式消息队列,针对RabbitMQ的镜像模式设计。仲裁队列中的消息需要有集群中过半节点同意确认后,才会写入到队列中。 仲裁队列与镜像队列的差异 使用镜像队列,当生产者发送一条消息,主队列会将消息同步给镜像队列,所有的镜像队列都保存消息后,主队列才会向生产者发送确认。 仲裁队列的算法是基于Raft共识算法的一个实现。仲裁队列包含一个主副本和多个从副本,当生产者向主副本发送消息时,主副本会将消息同步给从副本,当超过半数的副本保存消息后,主副本才会向生产者发送确认。并且,主副本的选举也需要超过半数的副本同意,这会避免出现网络分区时队列元数据不一致。所以仲裁队列有更高的一致性。 配置方法 在声明队列时,将队列的“xqueuetype”参数设置为“quorum”。 以下为java示例 Map arguments newHashMap<>(); arguments.put("xqueuetype", "quorum"); channel.queueDeclare("testquorumqueue", true, false, false, arguments); 设置仲裁队列的长度 通过设置队列属性的方式可以限制仲裁队列的长度和在内存中保存的长度。 xmaxlength:仲裁队列的最大消息数。如果超过则丢弃消息,或者发送到死信交换器。 xmaxlengthbytes:仲裁队列的最大总消息大小(字节数)。如果超过则丢弃消息,或者发送到死信交换器。 xmaxinmemorylength:限制仲裁队列的内存中最大消息数量。 xmaxinmemorybytes:限制仲裁队列的内存中的最大总消息大小(字节数)。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        高级特性
        仲裁队列
      • 产品定义
        本文主要介绍天翼云分布式消息服务RabbitMQ的产品定义。 天翼云分布式消息服务RabbitMQ完全兼容开源RabbitMQ,为您提供即开即用、消息特性丰富、灵活路由、高可用、监控和告警等特性,广泛应用于秒杀、流控、系统解耦等场景。 即开即用 天翼云分布式消息服务RabbitMQ提供单机和集群的消息实例,拥有丰富内存规格,您可以通过控制台直接下单购买并创建,无需单独准备服务器资源。 消息特性丰富 支持AMQP协议,支持普通消息、广播消息、死信、延迟消息等特性。 灵活路由 在RabbitMQ中,生产者将消息发送到交换器,由交换器将消息路由到队列中。交换器支持Direct、Topic、Headers和Fanout四种路由方式,同时支持交换机组合和自定义。 高可用 RabbitMQ集群提供镜像队列,可通过镜像在其他节点同步数据,单节点宕机时,仍可通过唯一的访问地址对外提供服务,数据不丢失。 监控和告警 支持对RabbitMQ实例状态进行监控,支持对集群每个代理的内存、CPU、网络流量等进行监控。如果集群或节点状态异常,将触发告警。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        产品简介
        产品定义
      • 名词解释
        本节介绍了分布式消息服务RabbitMQ产品常见的名词解释。 Vhost 虚拟主机(Virtual Host),类似于 Namespace 命名空间的概念,逻辑隔离,每个用户里可以创建多个 Vhost,每个 Vhost 可以创建若干个 Exchange 和 Queue。 Queue 消息队列,每个消息都会被投入到一个或者多个 Queue 里。 Producer 消息生产者,即投递消息的程序。 Consumer 消息消费者,即接受消息的程序。 Connection TCP 连接,Producer 或 Consumer 与消息队列间的物理 TCP 连接。 Connection将应用与分布式消息服务RabbitMQ连接在一起。Connection会执行认证、IP解析、路由等底层网络任务。应用与分布式消息服务RabbitMQ建立Connection需要多个TCP报文交互,因而会消耗较多的网络资源和分布式消息服务RabbitMQ资源。大量的Connection会对分布式消息服务RabbitMQ造成巨大压力,甚至触发分布式消息服务RabbitMQ SYN洪水攻击防护,导致分布式消息服务RabbitMQ无响应,进而影响业务。 Channel 在客户端的每个物理 TCP 连接里,可建立多个 Channel,每个 Channel 代表一个会话任务。 Channel是物理TCP连接中的虚拟连接。当应用通过Connection与分布式消息服务RabbitMQ建立连接后,所有的AMQP协议操作(例如创建队列、发送消息、接收消息等)都会通过Connection中的Channel完成。Channel可以复用Connection,即一个Connection下可以建立多个Channel。Channel不能脱离Connection独立存在,而必须存活在Connection中。当某个Connection断开时,该Connection下的所有Channel都会断开。当大量应用需要与分布式消息服务RabbitMQ建立多个连接时,建议您使用Channel来复用Connection,从而减少网络资源和分布式消息服务RabbitMQ资源消耗。 Connection和Channel的使用建议 保持Connection长连接,请勿频繁开启或关闭Connection。如果确实需要频繁开启或关闭连接,请使用Channel。 一个进程对应一个Connection,一个进程中的多个线程则分别对应一个Connection中的多个Channel。 Producer和Consumer分别使用不同的Connection进行消息发送和消费。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        产品简介
        名词解释
      • RabbitMQ队列迁移
        本文主要介绍分布式消息服务RabbitMQ的队列迁移最佳实践。 在RabbitMQ集群上,队列在各个节点分布不均衡会导致部分节点压力过大,无法更有效的利用集群。这可能是扩容节点、删除队列等原因导致的。 设置队列负载均衡的方法如下: 删除队列重建 通过Policy修改master节点方式 删除队列重建 1. 登录RabbitMQ WebUI页面。 2. 在“Overview”页签中,单击“Download broker definitions”,导出元数据。 3. 停止生产,等待数据消费完,然后删除原有队列。 在“Overview”页签中,确认数据是否已消费完。 可消费消息数(Ready)和未确认的消息数(Unacked)都为0时,说明消费完成。 等数据消费完后,删除原有队列。 在“Queues”页签,单击需要删除的队列名称,进入队列详情页面。 单机“Delete Queue”,删除队列。 4. 在“Overview”页签中,上传2中导出的元数据。 在“Overview”页签中,单击“选择文件”,选择2中导出的元数据。 单击“Upload broker definitions”,上传元数据。 上传成功后,显示如下信息。 实例会自动将队列均衡创建在各个节点上,在“Queues”页签中查看队列分布详情。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        最佳实践
        RabbitMQ队列迁移
      • 计费项
        本节介绍了分布式消息服务RabbitMQ产品的计费项。 RabbitMQ包括2个计费项:RabbitMQ队列实例费用、RabbitMQ队列存储空间费用,具体费用详情可参考产品资费。 目前天翼云对分布式消息服务RabbitMQ产品支持包年包月、按需两种计费方式。 计费项 计费项说明 使用的计费模式 计费公式 实例费用 计费因子:代理规格和代理数量 包年/包月、按需计费 实例规格单价 代理数量 购买时长 存储空间费用 计费因子:云硬盘类型、容量大小 包年/包月、按需计费 云硬盘规格单价 单个代理存储大小 代理数量 购买时长
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        计费说明
        计费项
      • 消息堆积对业务的影响及解决办法
        本文主要介绍消息堆积对业务的影响及解决办法。 消息堆积对业务的影响 过量的消息堆积可能会引起内存或磁盘告警,从而造成所有connection阻塞,进而影响到其他队列的使用,导致整体服务质量的下降。 消息堆积产生的原因 1. 一般来说消息堆积是由于生产消息的速率远大于消费消息的速率所导致的。比如某个时间段消费端处理消息异常缓慢,发送一条消息只要3秒钟,而消费一条消息需要1分钟,每分钟发送20个消息,只有一个消息被消费端处理,这样队列中就会产生大量的消息堆积。 2. 消费者出现异常,生产者一直在发送消息,但是消费者不能消费,造成消息积压。 3. 消费者没有出现异常,但是消费者与队列间的订阅可能出现了异常,也会导致消息无法被消费从而造成堆积的情况。 4. 消费者正常,与队列间的订阅也正常,但是消费端的代码本身逻辑耗费时间长导致了消费能力降低,这时候就会出现1中的情况从而导致消息堆积。 解决消息堆积的办法 1. 生产速率较快,消费速率较慢 :您可以通过以下方法解决。 增加消费者数量提高消费速率。 采用生产者确认的发送模式,并监控生产端消息生产速度和时长,当消息生产时长有明显增加时进行流控措施。 2. 消费者异常 :建议排查消费者逻辑是不是有问题,优化程序。 3. 消费者与队列间的订阅异常 :建议排查队列和消费者之间的订阅是否正常。 4. 消费端的代码本身逻辑耗费时间长 :建议给消息设置过期时间,设置方法如下: 在生产消息时,设置消息过期时间。消息过期时间以expiration值体现。 在properties中设置expiration值,单位为毫秒(ms)。 AMQP.BasicProperties properties new AMQP.BasicProperties().builder() .deliveryMode(2) .contentEncoding("UTF8") .expiration("10000") .build(); String message "hello rabbitmq"; channel.basicPublish(exchange, routingKey, properties, message.getBytes(StandardCharsets.UTF8)); 在Web界面中设置expiration值,单位为毫秒(ms)。 登录Web界面,在“Exchanges”页签,单击Exchange名称,进入Exchange详情页。在“Publish message”区域,设置expiration值,如下图所示。 设置队列过期时间。队列过期时间以xmessagettl值体现。从消息进入队列开始计算,超过了配置的队列过期时间,消息会自动被删除。 在客户端代码中设置xmessagettl值,单位为毫秒(ms)。 Map arguments new HashMap (); arguments.put("xmessagettl", 10000); channel.queueDeclare(queueName, true, false, false, arguments); 在Web界面新建队列时,设置xmessagettl值,单位为毫秒(ms)。 登录Web界面,在“Exchanges”页签,新建队列时,设置xmessagettl值,如下图所示。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        常见问题
        复杂操作问题
        消息堆积对业务的影响及解决办法
      • 延迟消息
        前提条件 RabbitMQ 版本 ≥ 3.8 启用官方插件: rabbitmqplugins enable rabbitmqdelayedmessageexchange 天翼云RabbitMQ默认启用延迟交换器交换器插件,无需操作 使用步骤 1. 声明 xdelayedmessage 类型交换机 2. 指定底层路由类型(xdelayedtype) 3. 发送消息时在 Header 中设置 xdelay(毫秒) 代码示例 java //声明延时交换机 Map args new HashMap<>(); args.put("xdelayedtype","direct"); channel.exchangeDeclare("delayedexchange","xdelayedmessage",true,false,args); // 声明并绑定队列 channel.queueDeclare("targetqueue",true,false,false,null); channel.queueBind("targetqueue","delayedexchange","routingkey"); //发送延时消息(延迟 5 秒) Map headers new HashMap<>(); headers.put("xdelay",5000); AMQP.BasicProperties props new AMQP.BasicProperties.Builder() .headers(headers) .build(); channel.basicPublish("delayedexchange","routingkey",props,"延时消息".getBytes(StandardCharsets.UTF8)); 特点说明 延迟精度高,使用方式直观 延迟逻辑在 Exchange 层完成 依赖插件及 RabbitMQ 版本兼容性 注意事项 精度与可靠性 DLX + TTL 可能存在毫秒级到秒级误差 插件方案 延迟精度更高,更适合严格定时场景 资源消耗 延时消息在到期前会占用 Broker 内存 大量长延时消息需重点监控: 队列堆积 内存水位 磁盘使用率 消息顺序 延时消息可能打乱原始发送顺序 对顺序敏感的业务需在消费端自行处理
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        最佳实践
        延迟消息
      • 产品价格
        本章节介绍分布式消息服务RabbitMQ的产品价格。 分布式消息服务RabbitMQ的产品价格,分为老规格和新规格两个类型,老规格是指“2vCPU4GB”格式的规格,新规格是指“rabbitmq.2u4g.cluster”格式的规格。自新规格正式上线之日起,用户新订购实例只能订购新规格、无法新订购老规格实例,但用户已订购的老规格实例,可正常使用,也可以进行规格变更。 RabbitMQ支持ARM架构的鲲鹏实例,其规格、价格与X86架构相同。 详细的产品价格如下: 一、老规格 分布式消息服务RabbitMQ老规格仅支持包年/包月计费模式,价格如下: 实例类型 实例规格 数量 包月价格(元/月) :::: 单机版 2C4G 1 278 单机版 4C8G 1 541 单机版 8C16G 1 1068 单机版 16C32G 1 1939 集群版 4C8G 3 3158 集群版 4C8G 5 4421 集群版 4C8G 7 5684 集群版 8C16G 3 6231 集群版 8C16G 5 8723 集群版 8C16G 7 11215 集群版 16C32G 3 12926 集群版 16C32G 5 18096 集群版 16C32G 7 23267 分布式消息服务RabbitMQ老规格的存储空间价格,同云硬盘单价一致。 分布式消息服务RabbitMQ老规格包周期订购,无包年优惠。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        计费说明
        产品价格
      • 约束与限制
        本文主要介绍分布式消息服务RabbitMQ的约束与限制。 分布式消息服务RabbitMQ在某些功能存在一些约束和限制,详细如表1所示。 表1 RabbitMQ使用约束和限制 限制项 约束和限制 描述 版本 当前服务端版本为3.8.35、3.7.17。 兼容AMQP 091协议的客户端版本。 连接数 RabbitMQ单机和集群实例,不同实例规格的连接数上限不一致,具体限制,请参考产品规格。 通道数 5GB 磁盘剩余空间低于5GB会触发磁盘高水位,生产者流程被阻塞。 clusterpartitionhandling pauseminority 当集群发生网络分区时,代理会检查自己是否处于“少数派”(存储分区的代理数小于等于总代理数的一半称为少数派)。少数派中的代理将会自动关闭服务并定期检测网络状态,待分区恢复之后重新启动服务。如果未开启镜像队列,发生分区时少数派上的队列将无法生产消费。此策略相当于放弃了可用性而选择了数据一致性。 rabbitmqdelayedmessageexchange 插件延迟时间存在1%左右的误差,可能提前或者推迟发送消息给消费者。 实例是否开启消息延迟功能。 RabbitMQ插件 RabbitMQ插件功能可用于测试和迁移业务等场景,不建议用于生产业务。 RabbitMQ实例主要提供AMQP 091业务消息的功能,兼容相关协议的Vhost、Exchange等组件。插件相关内容为非核心功能,不建议用于生产业务。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        产品简介
        约束与限制
      • 死信和TTL
        介绍分布式消息服务RabbitMQ死信和TTL功能。 死信 称为死信的信息,需要如下几个条件: 消息被消费者拒绝(通过basic.reject 或者 back.nack),并且设置 requeuefalse。 消息过期,队列设置了TTL(Time To Live)时间并且消息过期。 超过了队列的长度限制消息被丢弃。 为队列配置死信交换机,并在申明队列时指定“xdeadletterexchange”和“xdeadletterroutingkey”参数。队列根据“xdeadletterexchange”将死信消息发送到死信交换机中,并根据“xdeadletterroutingkey”为死信消息设置死信路由Key。 以下示例演示在Java客户端配置死信交换机和路由 channel.exchangeDeclare("some.exchange.name", "direct"); Map args new HashMap (); args.put("xdeadletterexchange", "some.exchange.name"); args.put("xdeadletterroutingkey", "someroutingkey"); channel.queueDeclare("myqueue", false, false, false, args); TTL RabbitMQ可以对消息和队列设置TTL. 目前有两种方法可以设置。第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间。第二种方法是对消息进行单独设置,每条消息TTL可以不同。如果上述两种方法同时使用,则消息的过期时间以两者之间TTL较小的那个数值为准。消息在队列的生存时间一旦超过设置的TTL值,就称为dead message, 消费者将无法再收到该消息。 设置队列TTL 通过队列属性设置消息TTL的方法是在queue.declare方法中加入xmessagettl参数,单位为ms. 以下示例演示在Java客户端设置队列TTL。 Map argss new HashMap (); argss.put("xmessagettl",6000); channel.queueDeclare(queueName, durable, exclusive, autoDelete, argss);
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        高级特性
        死信和TTL
      • 连接管理
        介绍分布式消息服务RabbitMQ连接管理内容。 背景信息 RabbitMQ 连接管理的背景信息如下: 生产者连接管理:在 RabbitMQ 中,生产者负责将消息发送到队列中。在高并发的场景下,可能会有大量的生产者与 RabbitMQ 建立连接。因此,连接管理变得至关重要。在这种场景下,需要确保连接的稳定性和可用性,以确保生产者能够持续地发送消息,并避免连接的过度消耗。 消费者连接管理:消费者负责从队列中接收消息并进行处理。在高负载的情况下,可能会有大量的消费者连接到 RabbitMQ。在这种场景下,需要进行连接的管理和优化,以确保消费者能够高效地处理消息,并避免过多的连接占用资源。 连接池管理:为了更好地管理连接,可以使用连接池来对 RabbitMQ 连接进行复用和管理。连接池可以帮助控制连接的数量,避免频繁地创建和销毁连接,提高系统的性能和资源利用率。通过连接池管理,可以确保连接的可用性,并有效地管理连接的生命周期。 连接超时和重连:在网络不稳定或 RabbitMQ 实例发生故障时,连接可能会中断或超时。在这种情况下,需要实现连接的超时和重连机制,以确保连接能够及时地恢复,并保持与 RabbitMQ 的正常通信。通过合理设置连接超时和重连策略,可以提高系统的可靠性和稳定性。 总之,RabbitMQ 连接管理的场景涉及生产者连接管理、消费者连接管理、连接池管理以及连接超时和重连。通过合理的连接管理和优化,可以提高系统的性能、可用性和稳定性,确保消息的可靠传递和处理。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        连接管理
      • 步骤二:创建RabbitMQ实例
        本章节主要介绍如何创建分布式消息服务RabbitMQ实例。 RabbitMQ是一款基于AMQP协议的开源服务,用于在分布式系统中存储转发消息,服务器端用Erlang语言(支持高并发、分布式以及健壮的容错能力等特点)编写,支持多种语言的客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP、AJAX等。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层的一个开放标准协议。 前提条件 在创建RabbitMQ专享版实例前,需要保证存在可使用的虚拟私有云。创建虚拟私有云的方法,请参考《虚拟私有云用户指南》。 如果您已有虚拟私有云,可重复使用,不需要多次创建。 为RabbitMQ授权 如果RabbitMQ实例需要开启IPv6功能,在创建实例前,需要授予RabbitMQ操作VPC终端节点的权限,否则会导致创建失败。 在IAM控制台创建委托,委托参数如下,其他参数保持默认,创建委托的具体步骤请参见《统一身份认证服务 用户指南》的“委托 > 委托其他云服务管理资源”章节。 委托名称:dmsadmintrust 委托类型:云服务 云服务:分布式消息服务 持续时间:永久 委托将拥有所选策略:DMS VPCEndpointAccess 操作步骤 步骤1 登录管理控制台。 步骤2 在管理控制台右上角单击,选择区域资源池。 说明 此处请选择与您的应用服务相同的区域。 步骤3 在管理控制台左上角单击,选择“企业中间件 > 分布式消息服务>RabbitMQ专享版”,进入分布式消息服务RabbitMQ专享版页面。 步骤4 单击页面右上方的“购买RabbitMQ实例”。 每个项目默认最多可以创建100个RabbitMQ专享版实例,如果您想创建更多实例,请联系客服申请增加配额。 步骤5 选择“计费模式”、“区域”、“项目”和“可用区”。 步骤6 设置“实例名称”和“企业项目”。 步骤7 设置实例信息。 1. 版本:RabbitMQ的版本号,当前仅支持3.8.35。 2. 实例类型:支持“单机”和“集群”。 单机:表示部署一个RabbitMQ代理。 集群:表示部署多个RabbitMQ代理,实现高可靠的消息存储。 3. 鲲鹏实例:“创建鲲鹏架构实例”选框,默认不勾选是X86架构的实例,勾选之后是ARM架构的鲲鹏实例。 4. 规格:根据实际情况选择规格。 说明 为了保证服务的稳定可靠,RabbitMQ采用了默认的40%高水位配置。当内存占用率到达40%高水位后,会触发流控,生产者发送消息会被阻塞。为了避免高水位的产生,请及时消费积压在队列中的消息。 5. 代理个数:根据实例情况选择代理个数。 6. 存储空间:选择RabbitMQ实例的磁盘类型和存储空间总量。 单机实例的取值范围:100GB ~ 30000GB 集群实例的取值范围为:100GB 代理数 ~ 30000GB 代理数 7. 虚拟私有云:选择已经创建好的虚拟私有云和子网。 虚拟私有云可以为您的RabbitMQ专享实例构建隔离的、能自主配置和管理的虚拟网络环境。 说明 虚拟私有云和子网在RabbitMQ实例创建完成后,不支持修改。 子网开启IPv6后,RabbitMQ实例支持IPv6功能。 实例创建成功后,不支持修改IPv6开关。 使用内网IPv6方式连接实例需要通过VPC终端节点实现,使用期间会产生VPC终端节点的费用。 8. 安全组:在“安全组”下拉列表,可以选择已经创建好的安全组。 安全组是一组对弹性云主机的访问规则的集合,为同一个VPC内具有相同安全保护需求并相互信任的弹性云主机提供访问策略。 您可以单击右侧的“管理安全组”,跳转到网络控制台的“安全组”页面,查看或创建安全组。 图1 设置实例信息 步骤8 设置连接RabbitMQ实例的用户名和密码。 步骤9 设置实例购买时长。 当选择了“包年/包月”付费模式时,页面才显示“购买时长”参数,您需要根据业务需要选择。 步骤10 单击“更多配置”,设置更多相关信息。 1. 设置“公网访问”。 您可以选择是否打开公网访问开关。 如果选择了开启,表示访问RabbitMQ实例可以通过弹性IP访问。这时页面会显示“弹性IP地址”,在“弹性IP地址”区域,您可下拉选择已有的弹性IP。另外,您可单击右侧的“创建弹性IP”,跳转到网络控制台的弹性IP页面,购买弹性IP。 图2 购买RabbitMQ实例时公网访问设置 说明 公网访问与VPC内访问相比,可能存在网络丢包和抖动等情况,且访问时延有所增加,因此建议仅在业务开发测试阶段开启公网访问进行调试。 如果用户在虚拟私有云的服务页面手动解绑定或删除EIP,相应RabbitMQ实例的公网访问功能会自动关闭。 2. 设置“SSL”。 客户端连接实例时SSL认证的开关。开启SSL,则数据加密传输,安全性更高。 SSL开关在实例创建完成后不支持修改,请明确是否需要开启 。 3. 设置“标签”。 标签用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 如果您已经预定义了标签,在“标签键”和“标签值”中选择已经定义的标签键值对。另外,您可以单击右侧的“查看预定义标签”,系统会跳转到标签管理服务页面,查看已经预定义的标签,或者创建新的标签。 您也可以直接在“标签键”和“标签值”中设置标签。 当前每个RabbitMQ实例最多支持设置20个不同标签。 4. 设置实例的描述信息。 步骤11 填写完上述信息后,单击“立即购买”,进入“规格确认”页面。 步骤12 确认实例信息无误且阅读并同意《分布式消息服务RabbitMQ服务等级协议》、《天翼云分布式消息服务协议》后,提交请求。 步骤13 在实例列表页面查看实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 如果创建实例失败,在信息栏的“创建失败任务”中查看创建失败的实例。请删除创建失败的RabbitMQ实例,然后重新创建。如果重新创建仍然失败,请联系客服。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        快速入门
        步骤二:创建RabbitMQ实例
      • 变更实例规格
        本章节主要介绍如何变更分布式消息服务RabbitMQ实例的规格。 操作场景 RabbitMQ实例创建成功后,您可以根据业务需要扩容,RabbitMQ实例支持的变更配置如表1所示。 表1 变更配置列表 实例类型 变更配置类型 是否支持扩展 是否支持缩容 :::::::: 集群 代理个数 √ × 集群 存储空间 √ × 集群 代理规格 √ √ 单机 代理个数 × × 单机 存储空间 √ × 单机 代理规格 √ √ 约束与限制 为了实例运行正常,变更规格过程中,请勿对实例进行其他操作。 实例变更规格后,配置费用将发生变化。 前提条件 已创建RabbitMQ实例,且实例状态为“运行中”。 操作步骤 步骤 1 登录管理控制台。 步骤 2 在管理控制台右上角单击,选择区域。 说明 此处请选择RabbitMQ实例所在的区域。 步骤 3 在管理控制台左上角单击,选择“企业中间件”>“分布式消息服务”>“RabbitMQ专享版”,进入分布式消息服务RabbitMQ专享版页面。 步骤 4 通过以下任意一种方法,变更实例规格。 在待变更规格的实例所在行,单击“更多 > 变更规格”。 单击RabbitMQ实例名称,进入实例详情页面。单击右上角的“更多 > 变更规格”。 步骤 5 根据实际情况选择扩容存储空间、代理个数或者扩容/缩容代理规格。 扩容存储空间 在“变更配置”中,选择“存储空间”,在“单个代理存储空间”中,选择扩容后的单个代理的存储空间大小,单击“下一步”。确认扩容信息无误后,单击“提交”。 在实例列表页面的“可用存储空间”中查看扩容后的总存储空间大小(即扩容后的单个代理的存储空间代理个数)。 说明 可用存储空间实际存储空间用于存储日志的存储空间格式化磁盘的损耗。 例如,实际扩容存储空间到700GB,用于存储日志的数据的存储空间为100GB,格式化磁盘损耗7GB,那么扩容后的可用存储空间为593GB。 扩容代理个数 在“变更配置”中,选择“代理数量”,在“代理数量”中,选择扩容后的代理个数,单击“下一步”。确认扩容信息无误后,单击“提交”。 在实例列表页面的“规格”中查看扩容后的代理个数。 说明 变更规格过程中会有秒级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。 扩容代理规格 在“变更配置”中,选择“代理规格”,在“代理规格”中,选择扩容后的规格,单击“下一步”。确认扩容信息无误后,单击“提交”。 在实例列表页面的“规格”中查看扩容后的代理规格。 说明 单机实例和没有配置镜像/仲裁队列的集群实例在变更规格过程中会有分钟级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。 配置了镜像/仲裁队列的集群实例在变更规格过程中会有秒级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。 当前只支持扩容,暂不支持缩容。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        实例日常管理
        变更实例规格
      • 单一活跃消费者
        本章节主要介绍分布式消息服务RabbitMQ的单一活跃消费者特性。 使用场景 单一活跃消费者(Single Active Consumer)表示队列中可以注册多个消费者,但是只允许一个消费者消费消息,只有在此消费者出现异常时,才会自动转移到另一个消费者进行消费。单一活跃消费者适用于需要保证消息消费顺序性,同时提供高可靠能力的场景。 说明 分布式消息服务RabbitMQ3.8.35版本才提供单一活跃消费者特性。 图1 单一活跃消费者消费流程 如图1所示,Producer生产9条消息,由于队列设置了单一活跃消费者特性,只有Consumer 1在消费消息。 更多关于单一活跃消费者的说明,请参考Single Active Consumer。 配置方法 在声明队列时,可以配置单一活跃消费者,只需要将队列的“xsingleactiveconsumer”参数设置为“true”。 以下示例演示在Java客户端设置单一活跃消费者。 Channel ch ...; Map arguments newHashMap (); arguments.put("xsingleactiveconsumer", true); ch.queueDeclare("myqueue", false, false, false, arguments); 以下示例演示在 RabbitMQ WebUI页面设置单一活跃消费者。 图2 设置单一活跃消费者 设置完成后,在“Queues”页面查看队列特性是否包含单一活跃消费者。如图3所示,“SAC”即单一活跃消费者。 图3 查看队列特性
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        高级特性
        单一活跃消费者
      • 虚拟主机用户权限管理
        介绍分布式消息服务RabbitMQ虚拟主机权限管理内容。 场景描述 在RabbitMQ中,虚拟主机(Virtual Hosts, vhosts)是一种逻辑隔离机制,允许单个 RabbitMQ 实例划分为多个独立的环境。每个虚拟主机都有自己的交换机、队列、绑定和权限设置。虚拟主机的用户权限管理,支持对每个用户配置三种权限,分别是配置权限、写权限、读权限,用户在未配置这三种权限之前,无法访问对应的虚拟主机。三个权限的详情如下: 配置权限:允许用户创建、修改或删除交换器(Exchange)、队列(Queue)和绑定关系。 写权限:允许用户向交换器发布消息。 读权限:允许用户消费队列中的消息或获取队列状态。 权限配置 在RabbitMQ中,虚拟主机的用户权限配置,采用的是正则表达式匹配方式, 只有满足正则表达式的资源才有权限。比如配置写权限为:".",表示该用户可以向虚拟主机下全部的交换器发布消息。配置写权限为:"^$”,表示该用户不允许向任何交换器发布消息。配置写权限为:"^exchange.",表示该用户可以向虚拟主机下以"exchange"开头的交换器发布消息。 最佳实践 1. 登录管理控制台。 2. 进入RabbitMQ管理控制台。 3. 在实例列表页在操作列,目标实例行点击“管理”。 4. 进入具体的实例管理页面,点击Vhost管理,在vhost列表页,针对指定的vhost,点击vhost进入具体的权限管理页: 5. 在具体的权限管理页,点击新建,选择指定用户,配置权限为"."、"."、".",则该用户拥有对虚拟主机下全部资源的配置权限、写权限和读权限: 6. 点击权限列表的操作列的“修改”或“删除”按钮,可以修改或删除对应用户的权限:
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        虚拟主机管理
        虚拟主机用户权限管理
      • RabbitMQ消息确认机制
        介绍分布式消息服务RabbitMQ消息确认机制。 消息确认 RabbitMQ消息确认机制分为发送消息确认和消息接收确认。 发送消息确认 生产者确认,即为生产者发送消息后,等待服务端确认。 以下示例演示在Java客户端配置生产者确认过程: try { channel.confirmSelect(); channel . basicPublish( "testexchange" , " routingKey" , null , "publisher confirm message".getBytes()); if (!channel.waitForConfirms()) { System.out.println( "send message failed") ; // do something else }else{ // do something } } catch (InterruptedException e) { e.printStackTrace() ; } 消息接收确认(ACK) 消费者收到消息后需要对 RabbitMQ Server 进行消息ACK确认,RabbitMQ根据确认信息决定是删除队列中的该信息还是重新发送。 重点在于消费者的下面两个方法 channel.basicAck 消费者签收 channel.basicNAck 消费者拒绝签收 以下示例演示在Java客户端配置生产者确认过程: QueueingConsumer consumer new QueueingConsumer(channel); channel.basicConsume(ConfirmConfig.queueName, false, consumer); QueueingConsumer.Delivery delivery consumer.nextDelivery(); String msg new String(delivery.getBody()); // do something with msg. channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        高级特性
        RabbitMQ消息确认机制
      • 使用限制
        介绍分布式消息服务RabbitMQ的功能使用限制。 限制项 约束和限制 描述 版本 当前服务端版本有3.8.9和3.8.35 兼容AMQP 091协议的客户端版本。 连接数 RabbitMQ单机和集群实例,不同实例规格的连接数上限不一致,具体限制,请参考产品规格。 通道数 2GB 磁盘剩余空间低于2GB会触发磁盘高水位,生产者流程被阻塞 clusterpartitionhandling pauseminority 当集群发生网络分区时,代理会检查自己是否处于“少数派”(存储分区的代理数小于等于总代理数的一半称为少数派)。少数派中的代理将会自动关闭服务并定期检测网络状态,待分区恢复之后重新启动服务。如果未开启镜像队列,发生分区时少数派上的队列将无法生产消费。此策略相当于放弃了可用性而选择了数据一致性。 rabbitmqdelayedmessageexchange 插件延迟时间存在1%左右的误差,可能提前或者推迟发送消息给消费者。 实例是否开启消息延迟功能。 延时消息最大延时时间 7天 延时消息的最大延时时间
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        产品简介
        使用限制
      • 设置实例镜像队列
        本章节主要介绍设置分布式消息服务RabbitMQ实例镜像队列。 镜像队列,允许集群将队列镜像到其他节点上,当集群某一节点宕机后,队列能自动切换到镜像中的其他节点,保证服务的可用性。 如果您需要了解RabbitMQ Web UI相关功能和概念,请自行查阅RabbitMQ官网。本章节仅介绍登录RabbitMQ实例的Web页面设置镜像队列的操作步骤。 操作步骤 步骤 1 登录RabbitMQ实例的Web UI。 步骤 2 在菜单栏,选择“Admin”。 图1 选择Admin菜单 步骤3 (可选)选择右侧导航栏“Virtual Hosts”,然后输入“Name”,单击“Add virtual host”,创建Vhost。 如果您需要设置指定Vhost,请执行本步骤;如果不需要,请直接执行步骤4。 图2 创建Vhost 步骤 4 选择右侧导航栏“Policies”,为Vhost设置规则。 如果为指定的Vhost设置,请在“Virtual Host”选择步骤3创建的Vhost;如果没有,则默认为“/”。 图3 设置Vhost规则 参数解释如下: Name: policy的名称,用户自定义。 Pattern: queue的匹配模式(正则表达式)。 Definition: 镜像定义,包括三个部分hasyncmode、hamode、haparams。 hasyncmode: 表示镜像队列中消息的同步方式,有效取值范围为:automatic和manually。 automatic:表示自动向master同步数据。 manually:表示手动向master同步数据。 hamode: 指明镜像队列的模式,有效取值范围为:all、exactly和nodes。 all:表示在集群所有的节点上进行镜像。 exactly:表示在指定个数的节点上进行镜像,节点的个数由haparams指定。 nodes:表示在指定的节点上进行镜像,节点名称通过haparams指定。 haparams: hamode模式需要用到的参数。 Priority: 可选参数,policy的优先级。 步骤 5 单击“Add policy”。 规则添加成功后如图4所示。 图4 Vhost规则
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        实例日常管理
        设置实例镜像队列
      • 入门指引
        本章节将为您介绍分布式消息服务RabbitMQ入门的基本流程,主要包括环境准备、创建资源、编译工程生产消费等环节,帮助您快速上手RabbitMQ。 操作流程 步骤说明 1、 环境准备 创建RabbitMQ实例先要准备好虚拟私有云、子网和安全组,可选弹性公网IP。 2、 创建实例 在订购分布式消息RabbitMQ填写和确认实例名称、引擎类型、计费模式等信息,确认费用后点击下一步,等待开通流程结果通知成功后完成创建实例。 3、 创建资源 一个新的应用接入消息队列需要先创建相关资源,包括:Vhost、User、Exchange、Queue。 4、 编译工程生产消费 以上工作完成后,在客户端应用编译工程进行生产消费,包括引入依赖、绑定BindingKey、生产消息和消费消息。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        快速入门
        入门指引
      • Java
        消费消息 import com.rabbitmq.client.; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.concurrent.TimeoutException; public class RabbitmqConsumer { //队列名称 private final static String QUEUENAME "helloMQ"; public static void main(String[] args) throws IOException, TimeoutException { //创建连接工厂 ConnectionFactory factory new ConnectionFactory(); //设置主机ip factory.setHost("127.0.0.1"); //设置amqp的tcp端口号 factory.setPort(5672); //设置用户名密码 factory.setUsername("YOUR USERNAME"); factory.setPassword("YOUR PASSWORD"); //设置Vhost factory.setVirtualHost("/"); //基于网络环境合理设置超时时间 factory.setConnectionTimeout(30 1000); factory.setHandshakeTimeout(30 1000); factory.setShutdownTimeout(0); Connection connection factory.newConnection(); Channel channel connection.createChannel(); //声明队列,主要为了防止消息接收者先运行此程序,队列还不存在时创建队列。 channel.queueDeclare(QUEUENAME, false, false, false, null); System.out.println(" [] Waiting for messages. To exit press CTRL+C"); Consumer consumer new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message new String(body, StandardCharsets.UTF8); System.out.println("Received message: '" + message + "'"); } }; channel.basicConsume(QUEUENAME, true, consumer); } } SSL生产消息 import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.DefaultSaslConfig; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.security.; import java.security.cert.CertificateException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class RabbitmqProducerSsl { // private final static String EXCHANGENAME "exchangeTest"; private final static String QUEUENAME "helloMQ"; // private final static String ROUTINGKEY "test"; public static void main(String[] args) throws IOException, TimeoutException, InterruptedException { // 创建连接工厂 ConnectionFactory factory new ConnectionFactory(); // 设置主机ip factory.setHost("127.0.0.1"); // 设置amqp的ssl端口号 factory.setPort(5671); String ksFile "/sslpath/ssl/clientrabbitmqkey.p12"; String tksFile "/sslpath/ssl/truststore"; SSLContext c null; try { char[] keyPassphrase "YOUR PASSPHRASE".toCharArray(); KeyStore ks KeyStore.getInstance("PKCS12"); ks.load(new FileInputStream(ksFile), keyPassphrase); KeyManagerFactory kmf KeyManagerFactory.getInstance("SunX509"); kmf.init(ks, keyPassphrase); char[] trustPassphrase "YOUR PASSPHRASE".toCharArray(); KeyStore tks KeyStore.getInstance("JKS"); tks.load(new FileInputStream(tksFile), trustPassphrase); TrustManagerFactory tmf TrustManagerFactory.getInstance("SunX509"); tmf.init(tks); c SSLContext.getInstance("tlsv1.2"); c.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); } catch (KeyStoreException e) { throw new RuntimeException(e); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } catch (CertificateException e) { throw new RuntimeException(e); } catch (UnrecoverableKeyException e) { throw new RuntimeException(e); } catch (KeyManagementException e) { throw new RuntimeException(e); } factory.setSaslConfig(DefaultSaslConfig.EXTERNAL); factory.useSslProtocol(c); // 设置Vhost,需要在控制台先创建 factory.setVirtualHost("/"); // 基于网络环境合理设置超时时间 factory.setConnectionTimeout(30 1000); factory.setHandshakeTimeout(30 1000); factory.setShutdownTimeout(0); // 创建一个连接 Connection connection factory.newConnection(); // 创建一个频道 Channel channel connection.createChannel(); // 指定一个队列 channel.queueDeclare(QUEUENAME, false, false, false, null); for (int i 0; i < 100; i++) { // 发送的消息 String message "Hello rabbitMQ!" + i; // 往队列中发送一条消息,使用默认的交换器 channel.basicPublish("", QUEUENAME, null, message.getBytes(StandardCharsets.UTF8)); System.out.println(" Sent message: '" + message + "'"); TimeUnit.MILLISECONDS.sleep(100); } //关闭频道和连接 channel.close(); connection.close(); } }
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        开发指南
        Java
      • 导出实例
        本文主要介绍如何导出分布式消息服务RabbitMQ的实例。 操作场景 本章节指导您在控制台导出实例列表。 操作步骤 1. 登录管理控制台。 2. 在管理控制台右上角单击,选择区域。 说明 请选择RabbitMQ实例所在的区域。 3. 在管理控制台左上角单击,选择“企业中间件 > 分布式消息服务 > RabbitMQ专享版”,进入分布式消息服务RabbitMQ专享版页面。 4. 单击“导出”,导出实例列表。 5. 单击“导出 > 导出全部数据到XLSX”/“导出 > 导出已选中数据到XLSX”,导出实例列表。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        实例日常管理
        导出实例
      • 创建资源
        参数 描述 虚拟主机 选择创建队列所属的虚拟主机 名称 队列的名称。以amq.开头的为保留字段,因此不能使用。例如:amq.test。 存储节点 队列数据存储节点 是否持久化 队列元数据是否持久化到磁盘 是否自动删除 最后一个Consumer取消订阅后,Queue是否自动删除。 其他参数 Message TTL消息过期时间:number型(单位:ms) Auto expire队列过期时间,过期后队列自动删除:number型(单位:ms) Max length队列能保存的最大消息数:number型(单位:个) Max length bytes队列能保存的最大消息量:number型(单位:字节) Overflow behaviour 超过队列的最大设定值后消息接收策略:drophead,rejectpublish drophead:删除头部消息,一般就是最早发送的消息,保证队列可用 rejectpublish:拒绝接受新的消息,保证消息不丢失 Dead letter exchange死信交换器名称 Dead letter routing key死信路由键 Maximum priority队列最大优先级:要开启消息的优先级,必须设置消息所在队列的优先级 Lazy mode队列惰性模式:default、lazy default:默认值,普通队列 lazy:惰性队列,尽可能将消息存到磁盘中,会引起I/O操作比较多,内存消耗极少(有大量堆积的持久化消息建议使用) Master Locator 队列保存位置:clientlocal、minmasters、random clientlocal:队列创建时所用连接的节点 minmasters: 集群中节点主数量最少的节点 random:由rabbitmq服务器随机指定一个节点
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        快速入门
        创建资源
      • RabbitMQ元数据迁移
        本节介绍了RabbitMQ元数据迁移的实践。 RabbitMQ元数据迁移指将用户线下实例的rabbitmq实例元数据迁移到线上实例。 背景信息 RabbitMQ集群元数据是指RabbitMQ集群的信息,包括User、Vhost、Queue、Exchange、Binding Key、Permission、Parameter等信息。RabbitMQ集群元数据存储于RabbitMQ集群的内部数据库,在集群的各个节点之间自动复制。集群中的每个节点都有自己的元数据副本。当某个节点的元数据变更时,所有节点的元数据都会同步更新。因此,集群的各个节点的元数据被导出时都是相同的。RabbitMQ集群元数据可以被导出成一份JSON文件,然后被导入另一个RabbitMQ集群,实现RabbitMQ集群元数据备份。 迁移元数据上云是指将开源RabbitMQ集群的元数据迁移到天翼云分布式消息服务RabbitMQ实例。分布式消息服务RabbitMQ是天翼云提供的全托管消息队列服务,兼容开源RabbitMQ。您可以将RabbitMQ集群元数据导出,然后导入分布式消息服务RabbitMQ实例,分布式消息服务RabbitMQ会根据成功导入的元数据在目标分布式消息服务RabbitMQ实例中创建对应的Vhost、Queue、Exchange、Binding,实现RabbitMQ集群元数据迁移上云。您可以将全部Vhost信息导入分布式消息服务RabbitMQ实例,也可以根据需要将某个Vhost信息导入分布式消息服务RabbitMQ实例中的Vhost。 迁移元数据 (1)在RabbitMQ WebUI页面查看,如图所示。 Overview视图中,点击“Download broker definitions”按钮下载集群元数据。得到rabbitmq元数据的json文件。 (2)上线rabbitmq实例导入元数据。 如上图所示,先点击选择文件,选择上一步骤导出的json文件,再点击导入配置。 注意:在线下的Rabbitmq集群中不能含有用户名rabbitmq,否则会被覆盖。用户名rabbitmq是天翼云Rabbitmq内部使用的管理账号。
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        最佳实践
        RabbitMQ元数据迁移
      • 消息持久化
        本章节主要介绍分布式消息服务RabbitMQ的消息持久化。 使用场景 默认情况下,RabbitMQ生产者生产的消息存储在内存中,当节点宕机或重启时,如何确保消息不丢失呢?RabbitMQ通过持久化机制实现,持久化包括Exchange持久化、Queue持久化和Message持久化。 持久化是将内存中的消息写入到磁盘中,以防异常情况导致内存中的消息丢失。但是磁盘的读写速度远不如内存,开启消息持久化后,RabbitMQ的性能会下降。 与惰性队列不同,持久化消息会在磁盘和内存中各存储一份,只有在内存空间不够时,才会将内存中的消息删除,存储到磁盘中。 说明 非持久化Queue、Exchange在重启之后会丢失。 非持久化Message在重启之后会丢失(经过持久化Queue/Exchange的消息不会自动变为持久化消息)。 持久化消息在尚未完成持久化时,如果服务器重启,消息会丢失。 设置Exchange持久化 在RabbitMQ WebUI页面创建Exchange时,设置“durable”为“true”,如图1所示,设置成功后如图2所示。 图1 设置Exchange持久化 图2 持久化的Exchange
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        用户指南
        高级特性
        消息持久化
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • ...
      • 241
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      安全隔离版OpenClaw

      OpenClaw云服务器专属“龙虾“套餐低至1.5折起

      天翼云新春焕新季

      云主机开年特惠28.8元/年,0元秒杀等你来抢!

      云上钜惠

      爆款云主机全场特惠,2核4G只要1.8折起!

      中小企业服务商合作专区

      国家云助力中小企业腾飞,高额上云补贴重磅上线

      出海产品促销专区

      爆款云主机低至2折,高性价比,不限新老速来抢购!

      天翼云奖励推广计划

      加入成为云推官,推荐新用户注册下单得现金奖励

      产品推荐

      GPU云主机

      天翼云CTyunOS系统

      公共算力服务

      模型推理服务

      应用托管

      一站式智算服务平台

      人脸检测

      人脸属性识别

      人脸比对

      推荐文档

      手动备份

      首次使用——开通账号

      创建消费组

      安全防护告警

      天翼云域名的优势

      登录

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 天翼云国际站
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号