消息队列介绍

Posted 分布式微服务技术提升

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息队列介绍相关的知识,希望对你有一定的参考价值。

应用解耦、异步通信、流量削峰、数据同步

功能
  • 优先级队列

    优先级高的消息优先被消费,如果消费者的消费速度大于生产者的速度,并且消息服务器中没有消息堆积,那么对发送的消息设置优先级也就没有意义了

  • 延迟队列

    延迟消息是指消息发送后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到消息进行消费

    延迟队列分两种:基于消息的延迟和基于队列的延迟,基于消息的延迟是指为每条消息设置不同的延迟时间,每当队列红油新消息进入就会重现根据延迟时间重新排序,这种方式的队列对性能影响很大;基于队列的延迟,是指不同延迟时间的消息放入不同的队列,每一个队列中的消息的延迟时间都是相同的,就不需要根据延迟时间进行排序了

  • 死信队列

    由于某些原因消息无法被正确的投递,为了确保消息不会无故丢弃,一般将其放入死信队列

    与此对应的是回退队列,试想如果消费者在消费时发生异常,那么就不会对消息进行确认(ack),进而发生回滚消息的操作之后消息始终放在队列的顶部,然后不断被处理和回滚,导致队列进入死循环,为了解决该问题,可以为每个队列设置一个回退队列,它和死信队列都是为异常的处理提供的一种机制保障,实际情况下,回退队列的角色可以由死信队列和重试队列来扮演。

  • 重试队列

    重试队列其实可以看成是一种回退队列,指当消费端消费消息失败时,为防止消息无故丢失而重新将消息回滚到broker中,与回退队列不同的是重试队列一般分为多个重试等级,每个重试等级一般也会设置重新投递延时,重试次数越多投递延时就越大。举个例子:消费第一次消息失败放入重试队列Q1,Q1的重新投递延迟为5S,在5s过后重新投递该消息,如果消息再次消费失败则入重试队列Q2,Q2的重新投递延迟为10S,在10s过后重新投递该消息;以此类推,重试越多次重新投递的时间就越久,为此需要设置一个上限,超过投递次数就进入死信队列

    重试队列与延迟队列的区别:延迟队列动作由内部触发,重试队列动作由外部消费端触发;延迟队列作用一次,而重试队列的动作范围会向后传递

  • 消费模式

    消费模式分为推模式和拉模式

  • 广播消息

    消息一般有两种传递模式:点对点模式和发布/订阅模式

  • 消息回溯

  • 消息堆积、持久化

    流量削峰得益于消息堆积的能力,消息堆积分为内存式堆积和磁盘式堆积

  • 消息追踪

  • 消息过滤

  • 多租户

  • 多协议支持

  • 跨语言支持

  • 流量控制

  • 消息顺序性

  • 安全机制

  • 消息幂等性

    例如:以订单号作为唯一性标识别,并在下游设置去重表

  • 事物性消息

性能

吞吐量、时延,消息堆积越大也就意味着时延也就越长,如果要求时效性高完全可以采用rpc方式实现。

可靠性、可用性

可靠性是指对消息不丢失的保障程度;可用性是指无故障运行的时间百分比

运维能力
社区力度及生态发展


以上是关于消息队列介绍的主要内容,如果未能解决你的问题,请参考以下文章

消息队列及常见消息队列介绍

消息队列及常见消息队列介绍

消息队列篇—常用消息队列MQ产品介绍及对比

6种消息队列介绍和对比

常用消息队列介绍

消息队列介绍