tencent cloud

消息队列 TDMQ

消息队列 RabbitMQ 版

消息队列 TDMQ for RabbitMQ® 版(TDMQ for RabbitMQ,简称 TDMQ RabbitMQ 版)是一款分布式高可用的消息队列服务,支持AMQP 0-9-1 协议,完全兼容开源 RabbitMQ 的各个组件与概念,同时具备计算存储分离,灵活扩缩容的底层优势。(RabbitMQ 是Broadcom, Inc. 在美国和其他国家的商标)

产品特性
兼容开源

支持 AMQP 0-9-1 版本标准协议,完全支持 RabbitMQ 开源社区和 Queue、Exchange、Vhost 组件。一键迁移开源 RabbitMQ 元数据,实现迁移上云 0 成本。

功能完备

TDMQ RabbitMQ 版支持原生 RabbitMQ 的各类消息模型。支持死信交换机与备用交换机,用户无需担心由于消息过期、路由失败等因素造成的消息丢失。支持优先级队列,保证消息按优先级顺序消费。

稳定可靠

TDMQ RabbitMQ 版的持久化机制保证服务重启后元数据与消息内容不丢失。消息采用三副本存储策略,某台物理机故障时,能够实现数据的快速迁移,保证用户数据3个备份可用,服务可用性达99.95%。

高扩展性

TDMQ RabbitMQ 版相比于开源 RabbitMQ 版支持更高的队列数量,可扩展能力强,底层系统可根据业务规模自动弹性伸缩,扩容、缩容集群规模,对用户透明。

易用免运维

提供 API 访问接口,支持开源所有语言和版本的 SDK。提供腾讯云平台整套运维服务,实时监控告警,帮助用户快速发现并解决问题,保证服务的可用性。

应用场景

秒杀是电商系统中一个非常常见的场景。解决方案比较多,使用 RabbitMQ 是一个比较好的做法。

如果是复杂的扣减库存(如涉及商品信息本身或牵连其他系统),则建议使用数据库进行库存数量的扣减,可以使用异步的方式来应对这种高并发的库存更新。

这种方式是针对“秒杀”场景的,依据“先到先得”原则来保证公平公正,所有用户都可以抢购,然后等待订单处理,最后生成订单(如果库存不足,则生成订单失败)。

在消费消息时,如果消息的重要程度不同,重要性高的消息希望被优先消费,这时可以使用 RabbitMQ 优先级队列的能力,让优先级高的消息优先被消费。

例如系统中有订单催付的场景,客户在商城下的订单,系统会及时将订单推送给客户。如果在设定的时间内未付款那么就会给客户推送一条短信提醒。商家会分大客户和小客户,例如大客户的订单催收消息需要优先处理,其他的小客户的催收相对优先级会低一些。使用 RabbitMQ 的优先级队列可以很好的支持这个场景,让优先级高的消息不会积压太久。如果发现是大客户的订单给一个相对比较高的优先级,优先被处理;否则就是默认优先级。

实际业务系统中,有发送延迟消息的需求。如果自己实现延迟逻辑,可靠性和延迟精度很难得到保障。使用消息中间件,如 RabbitMQ 可以很好的处理此类需求。延迟消息的使用场景有:

  • 订单系统中,用户下单后有30分钟时间进行支付。如果30分钟内没有支付成功,那么这个订单将进行异常处理。这里可以使用 RabbitMQ 延迟消息能力来处理这些超时订单。
  • 物联网系统中,用户希望通过手机遥控智能设备在指定的时间工作,这时就可以将指令发到延迟队列,当指令设定的时间到了,再将控制指令推送到智能设备。

很多业务系统需要将信息广播给下游的系统。如果通过 RPC 的方式,耦合比较重,对上游业务系统的压力也比较大。此时,可以使用 RabbitMQ 的 Fanout Exchange 来处理此类需求。可以使用的场景:

  • 大型多人在线游戏(MMO)可以将其用于排行榜更新或其他全局事件;
  • 体育新闻网站可以使用扇形交换机向客户端近乎实时的分发比分信息;
  • 分布式系统使用它来广播各种状态和配置更新;
  • 群聊可以使用它在参与者之间分发消息。

随着微服务架构的流行,服务拆分得较细,服务的数据会以消息的形式,使用精心设计的分发策略发送到不同的队列中去。这时可以充分地利用 RabbitMQ 灵活的消息路由的能力,将消息分发到目标 Queue 中。可以使用的场景:

  • 日志处理场景,可以将日志按类型投递到不同的 Queue。例如 Error 单独一个处理队列,优先处理。
  • 电商物流系统的物流信息按地域分发给不同的消费端进行处理。
  • 复杂路由场景

联系我们

点击「联系我们」, 获取个性化的售前购买咨询及售后服务。