【消息队列】推拉模式是什么

在这里插入图片描述

👏大家好!我是和风coding,希望我的文章能给你带来帮助!
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
📝点击 我的主页 还可以看到和风的其他内容噢,更多内容等你来探索!
📕欢迎参观我的个人网站:Gentlewind

在这里插入图片描述



什么是推拉模式

一般 MQ 都由三部分组成:

  • producer:发布消息
  • broker:MQ 所在服务器的总称,可以理解为消息存储的地方
  • consumer:处理消息

img

producer 和 broker 之间的通讯方式就是推模式,由客户端主动发送消息到消息队列中。

而 consumer 和 broker 之间的通讯方式则有推和拉两种模式。

推模式

当 producer 发布消息到 broker 后,broker 会马上自动推送消息给 consumer

broker 是主动推送消息的一方,而 consumer 是被动接受消息的

优点:

  • 实时性好:因为 broker 在收到消息后会立刻推送到 consumer
  • 简化了消费端的代码逻辑:消费端不需要额外增加拉去消息的逻辑

缺点:

  • 忽视了消费端的消费能力:因为 broker 接收一个消息就推送给 consumer,当消息量非常大,而消费端的处理能力有限,消息就会堆积在消费端的内存中,最后压垮消费端
  • 不能保证消息安全的到达消费端

拉模式

consumer 主动从 broker 拉取消息。

优点:

  • 消费端可以根据自身的消费能力来拉取消息
  • 适合批量消息的发送

缺点:

  • 实时性较差:毕竟消费者是去拉取消息,消费者怎么知道消息到了呢,所以消费者能做的就是不断的去拉取,但是又不能频繁的去拉取,这样也耗费性能,因此就必须降低请求的频率,请求间隔时间也就意味着消息的延迟
  • 性能消耗

总结

本质上来说,推拉两种模式的本质区别就是消息推送的主动权掌握在 broker 还是 consumer。

  • 如果是 broker 主动推送,实时性好,但是容易忽略消费端的消费能力
  • 如果是 consumer 主动拉取,可以让消费端根据消费能力自行消费,但是实时性较差,资源因为需要不断轮询会有所损耗

主流 MQ 的比较

中间件推模型拉模型默认模式
RabbitMQ支持支持推模式
Kafka支持(只有短轮询+长轮询)拉模式
RocketMQ支持支持拉模式
  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值