当前位置:网站首页>消息中间件的消费模式

消息中间件的消费模式

2022-06-10 14:13:00 morningcat2018

消息中间件的消费模式

Push 模式:

优势 可以尽可能快的将消息发送给消费者(在 Pull 模式下需要不断的拉取消息,因为并不知道消息队列中是否有新消息)
劣势 服务端并不知道消费端的消费能力,不停的发送消息可能在导致消费端缓存区溢出

ActiveMQ 中使用 prefetch limit 解决上述劣势

当推送消息的数量到达了perfetch limit规定的数值时,消费者还没有向消息中间件返回ACK,消息中间件将不再继续向消费者推送消息
如果消息的数量很少(生产者生产消息的速率不快),但是每条消息 消费者需要很长的时间处理,那么prefetch limit设置为1比较合适。
prefetch limit 设置成 0 意味着此时,消费者去轮询消息中间件获取消息。不再是Push方式了,而是Pull方式了。即消费者主动去消息中间件拉取消息。

Pull 模式:

优势 消费端可以按处理能力进行拉去
劣势 会增加消息延迟(消费者不知道何时有消息,只能不停的拉取消息,但又不能太频繁;所以一般都会设置一个时间,每隔一段时间去拉取一次,这个时间就是消息延迟时间)

拉模式

各个消息中间件的实现

长轮询

RocketMQ长轮询

Kafka长轮询
在这里插入图片描述


Java 源码里的设计模式

原网站

版权声明
本文为[morningcat2018]所创,转载请带上原文链接,感谢
https://blog.csdn.net/u013837825/article/details/125199136