消息队列介绍
Posted 分布式微服务技术提升
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息队列介绍相关的知识,希望对你有一定的参考价值。
应用解耦、异步通信、流量削峰、数据同步
功能
优先级队列
优先级高的消息优先被消费,如果消费者的消费速度大于生产者的速度,并且消息服务器中没有消息堆积,那么对发送的消息设置优先级也就没有意义了
延迟队列
延迟消息是指消息发送后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到消息进行消费
延迟队列分两种:基于消息的延迟和基于队列的延迟,基于消息的延迟是指为每条消息设置不同的延迟时间,每当队列红油新消息进入就会重现根据延迟时间重新排序,这种方式的队列对性能影响很大;基于队列的延迟,是指不同延迟时间的消息放入不同的队列,每一个队列中的消息的延迟时间都是相同的,就不需要根据延迟时间进行排序了
死信队列
由于某些原因消息无法被正确的投递,为了确保消息不会无故丢弃,一般将其放入死信队列
与此对应的是回退队列,试想如果消费者在消费时发生异常,那么就不会对消息进行确认(ack),进而发生回滚消息的操作之后消息始终放在队列的顶部,然后不断被处理和回滚,导致队列进入死循环,为了解决该问题,可以为每个队列设置一个回退队列,它和死信队列都是为异常的处理提供的一种机制保障,实际情况下,回退队列的角色可以由死信队列和重试队列来扮演。
重试队列
重试队列其实可以看成是一种回退队列,指当消费端消费消息失败时,为防止消息无故丢失而重新将消息回滚到broker中,与回退队列不同的是重试队列一般分为多个重试等级,每个重试等级一般也会设置重新投递延时,重试次数越多投递延时就越大。举个例子:消费第一次消息失败放入重试队列Q1,Q1的重新投递延迟为5S,在5s过后重新投递该消息,如果消息再次消费失败则入重试队列Q2,Q2的重新投递延迟为10S,在10s过后重新投递该消息;以此类推,重试越多次重新投递的时间就越久,为此需要设置一个上限,超过投递次数就进入死信队列
重试队列与延迟队列的区别:延迟队列动作由内部触发,重试队列动作由外部消费端触发;延迟队列作用一次,而重试队列的动作范围会向后传递
消费模式
消费模式分为推模式和拉模式
广播消息
消息一般有两种传递模式:点对点模式和发布/订阅模式
消息回溯
消息堆积、持久化
流量削峰得益于消息堆积的能力,消息堆积分为内存式堆积和磁盘式堆积
消息追踪
消息过滤
多租户
多协议支持
跨语言支持
流量控制
消息顺序性
安全机制
消息幂等性
例如:以订单号作为唯一性标识别,并在下游设置去重表
事物性消息
性能
吞吐量、时延,消息堆积越大也就意味着时延也就越长,如果要求时效性高完全可以采用rpc方式实现。
可靠性、可用性
可靠性是指对消息不丢失的保障程度;可用性是指无故障运行的时间百分比
运维能力
社区力度及生态发展
以上是关于消息队列介绍的主要内容,如果未能解决你的问题,请参考以下文章