检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
设置队列负载均衡 方案概述 在RabbitMQ集群上,由于扩容节点、删除队列等原因,会导致队列在各个节点分布不均衡,从而造成部分节点压力过大,无法更有效地利用集群。 这时候需要手动设置节点间队列的负载均衡,提升集群的利用率。设置队列负载均衡的方法如下: 删除队列重建 通过Policy修改master节点方式
RabbitMQ集群实例如何均衡分发请求到每个虚拟机? 集群内部使用LVS做负载均衡,由LVS将请求均衡分发到每个虚拟机节点。 父主题: 实例问题
如果未安装Python,请使用以下命令安装: yum install python Python版的RabbitMQ客户端,本文使用pika作为连接RabbitMQ的客户端 执行以下命令,安装推荐版本的pika: pip install pika 如果无法使用pip命令安装pika,建议改用pip3命令安装pika:
布式消息服务RabbitMQ版提供的一系列常用实践。 表1 常用最佳实践 实践 描述 设置队列负载均衡 扩容节点、删除队列可能会导致队列在各个节点分布不均衡,本文介绍如何设置队列负载均衡。
的通道继续消费。 提高RabbitMQ性能 本章节介绍如何通过设置队列长度、集群负载均衡、优先队列数量等参数,实现RabbitMQ的高性能。 设置队列负载均衡 本章节介绍如何设置节点间队列的负载均衡,提升集群的利用率。 通过消息幂等实现消息去重 本章节描述了重复消息产生的原因,以
为什么RabbitMQ集群只有一个连接地址? RabbitMQ集群实例的连接地址,实际上是实例的LVS节点地址(负载均衡地址),客户端连接实例时,通过负载均衡器将客户端请求分发到集群实例的各个节点。 图1 连接示意图 父主题: 连接问题
SL。 在实例详情中查看并记录“内网连接地址/公网连接地址”。 客户端所在服务器和RabbitMQ实例之间网络已互通,具体网络要求参见连接RabbitMQ网络要求。 客户端所在服务器已安装Java Development Kit 1.8.111或以上版本,并配置JAVA_HOME
SL。 在实例详情中查看并记录“内网连接地址/公网连接地址”。 客户端所在服务器和RabbitMQ实例之间网络已互通,具体网络要求参见连接RabbitMQ网络要求。 客户端所在服务器已安装Java Development Kit 1.8.111或以上版本,并配置JAVA_HOME
持久化是将内存中的消息写入到磁盘中,以防异常情况导致内存中的消息丢失。但是磁盘的读写速度远不如内存,开启消息持久化后,RabbitMQ的性能会下降。与惰性队列不同,持久化消息会在磁盘和内存中各存储一份,只有在内存空间不够时,才会将内存中的消息删除,存储到磁盘中。 非持久化的Queue、Exchange在重启之后会丢失。
一些客户端(如C语言客户端)没有发送心跳的逻辑,即使配置了心跳超时时间,开启了心跳,仍然无法发送心跳。此时需要额外启动一个线程,编写发送心跳的逻辑。 LVS的心跳超时时间 RabbitMQ集群实例使用LVS进行负载均衡,如图1所示,单节点实例不涉及LVS。 图1 集群实例的负载均衡 LVS对客户端连接设置了
SDK列表 在开始使用之前,请确保您安装的是最新版本的SDK。使用过时的版本可能会导致兼容性问题或无法使用最新功能。您可以在SDK中心查询版本信息。 表1提供了分布式消息服务RabbitMQ版支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、获取安装包以及查看指导文档。 表1 SDK列表
hash exchange插件优化负载均衡。该插件使用交换器来平衡队列之间的消息。根据消息的路由键,发送到交换器的消息一致且均匀地分布在多个队列中。该插件创建路由键的散列,并将消息传播到与该交换器具有绑定关系的队列中。使用此插件时,需要确保消费者从所有队列中消费。使用示例如下: 使用不同的路由键来路由消息。
如果两种方法同时使用,以较小的TTL为准。 TTL是RabbitMQ中需要慎用的特性,它可能会对性能产生负面影响。 设置队列TTL 通过channel.queueDeclare方法中的“x-expires”参数控制队列被自动删除前处于未使用状态的时间。未使用是指队列中没有任何消费者,也没有被重新声明,并且在过期时间前也未调用过Basic
消息回溯 支持 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 3.8.35版本:不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。 AMQP-0-9-1版本:支持。 消息堆积 支持 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。
DMS for RabbitMQ部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DMS
规格为16U32G,Linux系统的ECS服务器,具体步骤请参考购买弹性云服务器。 购买完成ECS后,需要在ECS中完成以下配置: 安装Java JDK,并配置JAVA_HOME与PATH环境变量。 export JAVA_HOME=/root/jdk1.8.0_231 export
回显信息中包含如下信息,表示Java JDK安装成功。 java version "1.8.0_321" 步骤二:创建RabbitMQ实例 进入购买RabbitMQ实例页面。 在“快速购买”页签,设置实例基础配置,如图2所示,配置详情请参考表2。 表2 设置实例基础配置 参数 说明
配置RabbitMQ惰性队列 默认情况下,RabbitMQ生产者生产的消息存储在内存中,当需要释放内存时,会将内存中的消息换页至磁盘中。换页操作会消耗较长的时间,且换页过程中队列无法处理消息。 如果生产速度过快(例如执行批处理任务),或者消费者由于各种原因(例如消费者下线、宕机)
配置RabbitMQ监控告警 本章节主要介绍部分监控指标的告警策略,以及配置操作。在实际业务中,建议按照以下告警策略,配置监控指标的告警规则。 表1 RabbitMQ实例配置告警的指标(RabbitMQ 3.x.x版本) 指标名称 告警策略 指标说明 解决方案 内存高水位状态 告警阈值:原始值>=1
删除后台任务管理中的指定记录 功能介绍 删除后台任务管理中的指定记录。 调用方法 请参见如何调用API。 URI DELETE /v2/{project_id}/instances/{instance_id}/tasks/{task_id} 表1 路径参数 参数 是否必选 参数类型