课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
消息队列模式的应用是程序员在学习软件编程开发技术的时候需要重点掌握的编程技术之一,而今天我们就通过案例分析来了解一下,常见的两种消息队列模式基础知识。
一、推模式
推模式指的是消息从Broker推向Consumer,即Consumer被动的接收消息,由Broker来主导消息的发送。
我们来想一下推模式有什么好处?
消息实时性高,Broker接受完消息之后可以立马推送给Consumer。
对于消费者使用来说更简单,简单啊就等着,反正有消息来了就会推过来。
推模式有什么缺点?
推送速率难以适应消费速率,推模式的目标就是以快的速度推送消息,当生产者往Broker发送消息的速率大于消费者消费消息的速率时,随着时间的增长消费者那边可能就“爆仓”了,因为根本消费不过来啊。当推送速率过快就像DDos攻击一样消费者就傻了。
并且不同的消费者的消费速率还不一样,身为Broker很难平衡每个消费者的推送速率,如果要实现自适应的推送速率那就需要在推送的时候消费者告诉Broker,我不行了你推慢点吧,然后Broker需要维护每个消费者的状态进行推送速率的变更。
这其实就增加了Broker自身的复杂度。
所以说推模式难以根据消费者的状态控制推送速率,适用于消息量不大、消费能力强要求实时性高的情况下。
二、拉模式
拉模式指的是Consumer主动向Broker请求拉取消息,即Broker被动的发送消息给Consumer。
我们来想一下拉模式有什么好处?
拉模式主动权就在消费者身上了,消费者可以根据自身的情况来发起拉取消息的请求。假设当前消费者觉得自己消费不过来了,它可以根据一定的策略停止拉取,或者间隔拉取都行。
拉模式下Broker就相对轻松了,它只管存生产者发来的消息,至于消费的时候自然由消费者主动发起,来一个请求就给它消息呗,从哪开始拿消息,拿多少消费者都告诉它,它就是一个没有感情的工具人,消费者要是没来取也不关它的事。
拉模式可以更合适的进行消息的批量发送,基于推模式可以来一个消息就推送,也可以缓存一些消息之后再推送,但是推送的时候其实不知道消费者到底能不能一次性处理这么多消息。而拉模式就更加合理,它可以参考消费者请求的信息来决定缓存多少消息之后批量发送。
拉模式有什么缺点?
消息延迟,毕竟是消费者去拉取消息,但是消费者怎么知道消息到了呢?所以它只能不断地拉取,但是又不能很频繁地请求,太频繁了就变成消费者在攻击Broker了。因此需要降低请求的频率,比如隔个2秒请求一次,你看着消息就很有可能延迟2秒了。
消息忙请求,忙请求就是比如消息隔了几个小时才有,那么在几个小时之内消费者的请求都是无效的,在做无用功。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。