MQ就这?

本文探讨了MQ的基本概念,解释了为何生产者不直接向消费者发送消息,强调了MQ带来的解耦和异步优势。进一步介绍了发布-订阅模型,允许消息被多个消费者共享,并通过具体案例分析了MQ在解耦、异步处理和削峰填谷方面的应用。
摘要由CSDN通过智能技术生成

1.MQ----what

  • MQ的本质就是一发,一存,一收。

preview

  • 问题来了,为什么生产者不直接发消息给消费者

      1. 解耦,消费者只用去队列中拿消息,它甚至都可能不知道生产者的存在
      2. 多了一个队列,将收信息的方式从同步变成异步
  • 问题又来了

    • 因为普通的MQ的队列只有入队和出队两种方式,而出队就带着把信息删除;这就相当于如果有多个消费者收到同一条信息,他们之间就存在着竞争的关系。
    • 由此引出了MQ的一个新模型,发布-订阅模型

2. 理解发布-订阅模型

preview

  • 一个消息能被多个消费者(订阅者)共享的原因:订阅者在收到消息前要去主题里面去”订阅主题“,最终每个订阅者都会收到一个消息的全量消息。

3. 具体案例分析-MQ

  • 1.为什么用MQ

    解耦,异步,削峰

  • 解耦:具体场景如下图。一个下单的流程可能分为支付,优

要实现延迟队列和高吞吐量的消息队列,可以结合使用RabbitMQ和其他相关技术,如以下所述: 1. 延迟队列的实现: - 使用RabbitMQ的插件:RabbitMQ提供了一个插件叫做rabbitmq_delayed_message_exchange,可以用来实现延迟队列。通过创建一个延迟交换器和一个延迟队列,然后将消息发送到延迟队列中,可以实现消息的延迟投递。 - 使用TTL和DLX机制:可以通过设置消息的过期时间(TTL)和设置死信交换器(DLX)来实现延迟队列。当消息过期后会被发送到DLX,然后再根据DLX的绑定规则进行处理。 2. 高吞吐量的实现: - 消息批量发送:可以将多个消息打包成一个批量发送,减少网络开销和传输时间。 - 消息压缩:对于大量数据的消息,可以使用压缩算法对消息进行压缩,减少传输的数据量。 - 并发处理:使用多线程或者多个消费者实例来并发处理消息,提高处理速度。 - 分区和分布式架构:将消息分散到多个分区或者多个节点上进行处理,可以提高吞吐量和并发性能。 - 消息预取:对于消费者来说,可以设置预取值(prefetch count),指定一次从消息队列中获取的消息数量,减少网络开销和提高吞吐量。 需要注意的是,延迟队列和高吞吐量的实现方式可能因具体的消息队列系统而有所不同。以上提到的是一些常见的方法,具体的实现还需要根据具体的业务需求和技术选择进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值