检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
设置队列负载均衡 方案概述 在RabbitMQ集群上,由于扩容节点、删除队列等原因,会导致队列在各个节点分布不均衡,从而造成部分节点压力过大,无法更有效地利用集群。 这时候需要手动设置节点间队列的负载均衡,提升集群的利用率。设置队列负载均衡的方法如下: 删除队列重建 通过Policy修改master节点方式
为什么RabbitMQ集群只有一个连接地址? RabbitMQ集群实例的连接地址,实际上是实例的LVS节点地址(负载均衡地址),客户端连接实例时,通过负载均衡器将客户端请求分发到集群实例的各个节点。 图1 连接示意图 父主题: 连接问题
RabbitMQ集群实例如何均衡分发请求到每个虚拟机? 集群内部使用LVS做负载均衡,由LVS将请求均衡分发到每个虚拟机节点。 父主题: 实例问题
大多数客户端并未实现通道的线程安全,所以不要在线程之间共享通道。 不要频繁打开和关闭连接或通道 频繁打开和关闭连接或通道会发送和接收大量的TCP包,从而导致更高的延迟,确保不要频繁打开和关闭连接或通道。 生产者和消费者使用不同的连接 生产者和消费者使用不同的连接以实现高吞吐量。当生产者发送太多消息给
绑定Queue是将Exchange和Queue关联起来,在生产者发送消息到Exchange后,Exchange根据路由规则将消息发送到与其关联的Queue中。 本章节指导如何在控制台为Exchange绑定Queue,只有绑定Queue后,Exchange才能把消息路由并存放到Queue。一个
Queue 本章节指导如何在控制台为Exchange解绑Queue。解绑Queue后,Exchange将无法把消息路由并存放到该Queue。 约束与限制 解绑Queue后,对应的路由将不再提供服务,且无法恢复,请谨慎操作。 前提条件 已创建Exchange。 已创建Queue。 Exchange已绑定Queue。
Direct Exchange和Topic Exchange需要设置Routing Key,Exchange会将消息路由到Routing Key匹配成功的目标Exchange中。如果不设置Routing Key,Exchange会将消息路由到所有与它绑定的目标Exchange中。
e。 前提条件 已创建Exchange。 Exchange或Queue已绑定Exchange。 约束与限制 解绑Exchange后,对应的路由将不再提供服务,且无法恢复,请谨慎操作。 为Exchange解绑目标Exchange 登录管理控制台。 在管理控制台左上角单击,选择RabbitMQ实例所在的区域。
的通道继续消费。 提高RabbitMQ性能 本章节介绍如何通过设置队列长度、集群负载均衡、优先队列数量等参数,实现RabbitMQ的高性能。 设置队列负载均衡 本章节介绍如何设置节点间队列的负载均衡,提升集群的利用率。 通过消息幂等实现消息去重 本章节描述了重复消息产生的原因,以
布式消息服务RabbitMQ版提供的一系列常用实践。 表1 常用最佳实践 实践 描述 设置队列负载均衡 扩容节点、删除队列可能会导致队列在各个节点分布不均衡,本文介绍如何设置队列负载均衡。
RabbitMQ业务使用流程 分布式消息服务RabbitMQ版完全兼容开源RabbitMQ,为您提供即开即用、消息特性丰富、灵活路由、高可用、监控和告警等特性,广泛应用于秒杀、流控、系统解耦等场景。 使用RabbitMQ实例生产消费消息的流程如下图所示。 图1 RabbitMQ业务使用流程
支持AMQP协议,支持普通消息、广播消息、死信、延迟消息等特性。 灵活路由 在RabbitMQ中,生产者将消息发送到交换器,由交换器将消息路由到队列中。交换器支持Direct、Topic、Headers和Fanout四种路由方式,同时支持交换机组合和自定义。 高可用 RabbitMQ集群提供仲裁队列
x-delayed-message Exchange根据设定的Exchange类型的路由规则路由消息。 direct:该类型Exchange会将消息路由到Routing Key完全匹配的Queue中。 fanout:该类型Exchange会将消息路由到所有与其绑定的Queue中。 topic:该类型Exchange将Routing
TTL后,消息会被丢弃,如果队列设置了死信交换机,丢弃的消息会被转发到死信交换机,由死信交换机将其路由到死信队列。更多关于TTL的说明,请参考TTL。 RabbitMQ支持设置消息和队列的TTL,消息的TTL可以通过以下两种方法设置: 通过队列属性设置:队列中所有消息的具有相同的过期时间。
属性键值对和绑定属性键值对匹配,就会路由消息。 路由规则: Header Exchange根据消息Headers属性键值对和绑定属性键值对的匹配情况路由消息。 应用示例: 图4 Header Exchange示例 如上图所示,Message A将会发送到Queue 1和Queue
动情况下可能会导致连接重建。如果心跳超时时间设置过长,可能导致集群进行主备切换时感知时间过长。推荐设置心跳超时时间为10s。 什么是心跳 RabbitMQ实例提供了心跳功能,以确保应用程序层及时发现中断的连接和完全无响应的对端。心跳还可以防止某些网络设备在一段时间内由于没有活动而
在RabbitMQ中,使用死信可能会对性能产生负面影响,请慎用。 使用队列参数配置死信交换机和路由 为队列配置死信交换机,并在创建队列时指定“x-dead-letter-exchange”和“x-dead-letter-routing-key”参数。队列根据“x-dead-lett
retry logic } 客户端使用建议 生产者端 网络异常可能导致消息路由失效,消息丢失。建议在生产者客户端中将Mandatory参数设置为“true”,以便在Exchange根据路由规则无法将消息路由到符合条件的Queue时,调用Basic.Return方法将消息返回给生产者。
RabbitMQ相关概念 华为云使用RabbitMQ作为消息引擎,RabbitMQ是一个生产者和消费者模型,主要负责接收、存储和转发消息。以下概念基于RabbitMQ进行描述。 消息 消息一般分为两部分,消息体和标签,标签主要用来描述这条消息,消息体是消息的内容,是一个JSON体或者数据等。
查看RabbitMQ消息 生产者向Queue生产消息后,可以在控制台查看指定Vhost和Queue的消息内容和消息轨迹。 约束与限制 仅RabbitMQ AMQP-0-9-1版本实例支持在控制台查看消息。 查看RabbitMQ消息 登录管理控制台。 在管理控制台左上角单击,选择RabbitMQ实例所在的区域。