检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
设置队列负载均衡 方案概述 在RabbitMQ集群上,由于扩容节点、删除队列等原因,会导致队列在各个节点分布不均衡,从而造成部分节点压力过大,无法更有效地利用集群。 这时候需要手动设置节点间队列的负载均衡,提升集群的利用率。设置队列负载均衡的方法如下: 删除队列重建 通过Policy修改master节点方式
为什么RabbitMQ集群只有一个连接地址? RabbitMQ集群实例的连接地址,实际上是实例的LVS节点地址(负载均衡地址),客户端连接实例时,通过负载均衡器将客户端请求分发到集群实例的各个节点。 图1 连接示意图 父主题: 连接问题
RabbitMQ集群实例如何均衡分发请求到每个虚拟机? 集群内部使用LVS做负载均衡,由LVS将请求均衡分发到每个虚拟机节点。 父主题: 实例问题
大多数客户端并未实现通道的线程安全,所以不要在线程之间共享通道。 不要频繁打开和关闭连接或通道 频繁打开和关闭连接或通道会发送和接收大量的TCP包,从而导致更高的延迟,确保不要频繁打开和关闭连接或通道。 生产者和消费者使用不同的连接 生产者和消费者使用不同的连接以实现高吞吐量。当生产者发送太多消息给
解绑RabbitMQ Queue 本章节指导如何在控制台为Exchange解绑Queue。解绑Queue后,Exchange将无法把消息路由并存放到该Queue。 前提条件 已创建Exchange。 已创建Queue。 Exchange已绑定Queue。 为Exchange解绑Queue
绑定Queue是将Exchange和Queue关联起来,在生产者发送消息到Exchange后,Exchange根据路由规则将消息发送到与其关联的Queue中。 本章节指导如何在控制台为Exchange绑定Queue,只有绑定Queue后,Exchange才能把消息路由并存放到Queue。一个
Direct Exchange和Topic Exchange需要设置Routing Key,Exchange会将消息路由到Routing Key匹配成功的目标Exchange中。如果不设置Routing Key,Exchange会将消息路由到所有与它绑定的目标Exchange中。
心跳超时时间定义了对等TCP连接在多长时间后被服务端和客户端视为关闭。服务端和客户端会对配置的心跳超时时间进行协商,客户端必须配置该值来发送心跳。RabbitMQ官方团队维护的3个客户端(Java、.NET、Erlang语言)的心跳超时时间协商逻辑如下: 服务端和客户端设置的心跳超时时间都不为0时,两者间较小的值生效。
RabbitMQ基于AMQP协议实现。 跨语言支持 支持多语言的客户端。 采用Scala和Java编写,支持多种语言的客户端。 支持多种语言的客户端。 流量控制 RocketMQ 5.x支持基于实例规格的流量控制。 支持client、user和Topic级别,通过主动设置可将流控作用于生产者或消费者。 R
布式消息服务RabbitMQ版提供的一系列常用实践。 表1 常用最佳实践 实践 描述 设置队列负载均衡 扩容节点、删除队列可能会导致队列在各个节点分布不均衡,本文介绍如何设置队列负载均衡。
的通道继续消费。 提高RabbitMQ性能 本章节介绍如何通过设置队列长度、集群负载均衡、优先队列数量等参数,实现RabbitMQ的高性能。 设置队列负载均衡 本章节介绍如何设置节点间队列的负载均衡,提升集群的利用率。 通过消息幂等实现消息去重 本章节描述了重复消息产生的原因,以
在“Exchange”页签中,在Exchange后,单击“绑定”,弹出“绑定”页面。 在待解绑的Exchange后,单击“解除绑定”,弹出“解除绑定”对话框。 解除绑定后,该路由将不再提供服务,且无法恢复,请谨慎操作。 单击“是”,完成Exchange的解绑。 为Queue解绑源Exchange 登录管理控制台。 在管理控制台左上角单击,选择区域。
RabbitMQ业务使用流程 分布式消息服务RabbitMQ版完全兼容开源RabbitMQ,为您提供即开即用、消息特性丰富、灵活路由、高可用、监控和告警等特性,广泛应用于秒杀、流控、系统解耦等场景。 使用RabbitMQ实例生产消费消息的流程如下图所示。 图1 RabbitMQ业务使用流程
x-delayed-message Exchange根据设定的Exchange类型的路由规则路由消息。 direct:该类型Exchange会将消息路由到Routing Key完全匹配的Queue中。 fanout:该类型Exchange会将消息路由到所有与其绑定的Queue中。 topic:该类型Exchange将Routing
支持AMQP协议,支持普通消息、广播消息、死信、延迟消息等特性。 灵活路由 在RabbitMQ中,生产者将消息发送到交换器,由交换器将消息路由到队列中。交换器支持Direct、Topic、Headers和Fanout四种路由方式,同时支持交换机组合和自定义。 高可用 RabbitMQ集群提供仲裁队列
TTL后,消息会被丢弃,如果队列设置了死信交换机,丢弃的消息会被转发到死信交换机,由死信交换机将其路由到死信队列。更多关于TTL的说明,请参考TTL。 RabbitMQ支持设置消息和队列的TTL,消息的TTL可以通过以下两种方法设置: 通过队列属性设置:队列中所有消息的具有相同的过期时间。
属性键值对和绑定属性键值对匹配,就会路由消息。 路由规则: Header Exchange根据消息Headers属性键值对和绑定属性键值对的匹配情况路由消息。 应用示例: 图4 Header Exchange示例 如上图所示,Message A将会发送到Queue 1和Queue
在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体或者数据等。