消息队列_03(消息模型: 主题和队列有什么区别)

消息模型: 主题和队列有什么区别

1.区别

队列是一种数据结构,有完整而严格的定义。
队列: 先进先出
在这里插入图片描述
注: 多个生产者发送信息为所有消息合集,顺序为生产者发送消息的自然顺序。
多个消费者时,任何一条消息只能被一个消费者收到

多个消费者需要共享一个消息,演化出“发布-订阅模型”
在这里插入图片描述
注:队列和发布-订阅模型最大区别就是一份消息数据能不能被消费多次的问题

2. RabbitMQ的消息模型

依然使用队列模型

在这里插入图片描述
配置Exchange将消息发送到多个队列,每个队列中都存放一份完整的消息数据。

3. RocketMQ的消息模型

  1. 标准的发布-订阅模型
  2. 也有队列概念:请求-确认机制
  3. 问题:为了确保消息的有序性,在有一条消息被成功消费之前,下一条消息不能被消费,否则会出现消息空洞,违背有序性原则
  4. 解决这个问题增加了队列概念:每个主题包含多个队列,通过多个队列来实现多实例并行生产和消费
  5. 只在队列上保证消息有序性,主题层面是无法保证的
  6. 订阅者为通过消费组来实现的,不同消费组之间消费进度彼此不受影响。
  7. 消费组内多个消费者是竞争关系
  8. 消息队列上维护一个消费位置
    在这里插入图片描述

4. Kafka的消息模型

  1. 模型和RocketMQ一样
  2. 唯一区别,队列概念名称不一样,这里为“分区”,含义和功能没有区别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值