检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
通过消息幂等实现消息去重 方案概述 在RabbitMQ的业务处理过程中,如果消息重发了多次,消费者端对该重复消息消费多次与消费一次的结果是相同的,多次消费并没有对业务产生负面影响,那么这个消息处理过程是幂等的。消息幂等保证了无论消息被重复投递多少次,最终的处理结果都是一致的,避免了因消息重复而对业务产生影响。
实现网络异常时RabbitMQ客户端自动恢复 方案概述 由于服务端重启、网络抖动等原因造成客户端网络连接断开时,将导致客户端无法正常生产和消费消息。 通过在客户端侧设置重连机制,使客户端在网络连接断开时自动恢复连接,降低网络故障对业务的影响。以下场景会触发网络自动恢复: 在连接的I/O循环中抛出未处理的异常
实现RabbitMQ节点重启后消费者自动重连 方案概述 RabbitMQ的amqp-client虽然自带重连机制,但是自带的重连机制只会重试一次,重连失败后就不再执行。这时如果消费者没有做额外的重试机制,那么这个消费者就彻底断开与服务端的连接,无法消费消息。 amqp-clien
成长地图 | 华为云 分布式消息服务RabbitMQ版 分布式消息服务RabbitMQ版(Distributed Message Service for RabbitMQ)完全兼容开源RabbitMQ,为您提供即开即用、消息特性丰富、灵活路由、高可用、监控和告警等特性,广泛应用于秒杀、流控、系统解耦等场景。
RabbitMQ实例是否支持跨VPC访问? RabbitMQ实例支持跨VPC访问,可以通过创建VPC对等连接,将两个VPC的网络打通,实现跨VPC访问实例。 关于创建和使用VPC对等连接,请参考VPC对等连接说明。 父主题: 连接问题
图解Kafka、RabbitMQ和RocketMQ的差异
开启RabbitMQ ACL访问 通过ACL可以实现对RabbitMQ实例中生产者和消费者身份的精确识别,为不同用户赋予不同的Vhost和Vhost下不同资源的权限,以达到不同用户之间权限隔离的目的。开启ACL权限控制功能后,生产消息和消费消息时,需要鉴权。 仅RabbitMQ
AMQP-0-9-1版本RabbitMQ与开源RabbitMQ的差异 AMQP-0-9-1版本RabbitMQ是一款基于高可用分布式存储架构实现的AMQP 0-9-1协议的消息产品,能够兼容开源的RabbitMQ客户端。与开源RabbitMQ相比,能够解决各种稳定性痛点(例如消息堆
大多数客户端并未实现通道的线程安全,所以不要在线程之间共享通道。 不要频繁打开和关闭连接或通道 频繁打开和关闭连接或通道会发送和接收大量的TCP包,从而导致更高的延迟,确保不要频繁打开和关闭连接或通道。 生产者和消费者使用不同的连接 生产者和消费者使用不同的连接以实现高吞吐量。当生
最佳实践 说明 实现网络异常时RabbitMQ客户端自动恢复 本章节提供了客户端重连示例代码,使客户端在网络异常导致连接断开时自动恢复连接,降低网络故障对业务的影响。 实现RabbitMQ节点重启后消费者自动重连 本章节提供了RabbitMQ节点重启后消费者自动重连示例代码,实现在通道关闭后重新为消费者创建新的通道继续消费。
在实际业务场景中,RabbitMQ实例存在多个生产者和消费者,在业务迁移时,不会迁移数据,只是通过逐个增加/关闭消费者、生产者的方式迁移实例,这种迁移方式可以实现业务无感迁移。 前提条件 已创建目标RabbitMQ实例,具体请参考购买RabbitMQ实例。 实施方案(双读模式迁移实例) 将原Rabb
如果客户端和RabbitMQ实例部署在不同VPC中,由于VPC之间逻辑隔离,客户端和RabbitMQ实例不能直接通信,需要打通VPC之间的网络。 表1 连接方式说明 连接方式 实现方式 参考文档 公网连接 在RabbitMQ控制台开启公网访问,配置弹性公网IP,客户端通过弹性公网IP访问RabbitMQ实例。 配置RabbitMQ实例的公网访问
RabbitMQ实例状态为“运行中”。 操作步骤 登录管理控制台。 单击左侧导航栏的图标,选择“应用中间件 > 分布式消息服务RabbitMQ版”。 通过以下任意一种方法,实现按需实例转包周期。 勾选RabbitMQ实例名称左侧的方框,可选一个或多个,单击信息栏左上侧的“转包周期”,弹出“转包周期”对话框,单击“是”,跳转到“按需转包年/包月”页面。
RabbitMQ集群提供镜像队列,通过镜像在其他节点同步数据。单节点宕机时,仍可通过唯一的访问地址对外提供服务。 数据容灾 通过支持数据多副本方式实现数据容灾。 父主题: 安全
AMQP-0-9-1版本:支持。 多租户 支持 支持 支持 多协议支持 兼容RocketMQ协议。 只支持Kafka自定义协议。 RabbitMQ基于AMQP协议实现。 跨语言支持 支持多语言的客户端。 采用Scala和Java编写,支持多种语言的客户端。 支持多种语言的客户端。 流量控制 RocketMQ
图2 删除单个队列 批量删除Queue(RabbitMQ WebUI) 新增与待删除队列的前缀名称相同、且队列TTL为1ms的策略,通过此策略实现批量删除队列。 登录RabbitMQ WebUI页面。 在“Admin > Policies”页面中,新增一条策略。 图3 通过Policy批量删除队列
在电子商务系统或大型网站中,上下游系统处理能力存在差异,处理能力高的上游系统的突发流量可能会对处理能力低的某些下游系统造成冲击,需要提高系统的可用性的同时降低系统实现的复杂性。电商大促销等流量洪流突然来袭时,可以通过队列服务堆积缓存订单等信息,在下游系统有能力处理消息的时候再处理,避免下游订阅系统因突发
灵活组合以达到最优效果。 针对长期稳定的成熟业务,使用包年/包月计费模式。 针对不能中断的短期、突增或不可预测的业务,使用按需计费模式。 实现自动化运维 华为云也提供了丰富的运维类产品,帮助您提升运维效率,降低运维的人力成本。例如: 弹性伸缩:持续维护跨计费模式、跨可用区、跨实例
分布式消息服务RabbitMQ版提供了REST(Representational State Transfer)风格API,支持您通过HTTP/HTTPS请求调用,实现创建、修改、删除实例等操作。 支持区域: 全部 API概览
实例创建后,版本号不支持修改。 部署架构 根据需求选择“单机”或“集群”。 单机:表示部署一个RabbitMQ代理。 集群:表示部署多个RabbitMQ代理,实现高可靠的消息存储。 代理规格 根据业务需求选择相应的代理规格。更多关于规格的介绍,请参见产品规格。 说明: 为了保证服务的稳定可靠,Rab