大家好,这里是编程Cookbook。本文概要介绍消息队列的核心原理和实现,以及常见问题及其解决方案等。本文不会过多的扩展详细的消息队列系统,如RocketMQ、RabbitMQ、Kafka等,这些会在后续系列文章中详细介绍。
由于篇幅问题,本文分为上下两节,上节内容参考历史文章:《消息队列概要讲解(上)》
消息传递模式
在消息队列的运行机制中,消费者从消息队列获取数据主要有两种方式:推(Push) 模式和 拉(Pull) 模式,它们在数据传递方式、实时性和资源消耗等方面有显著差异。
首先需要明确一下,推拉模式指的是Consumer和Broker之间的交互。Producer与Broker之间就是推的方式,即Producer将消息推送给Broker,而不是Broker主动去拉取消息。
如果需要Broker去拉取消息,那么Producer就必须在本地保存消息来等待Broker的拉取,如果有很多生产者的话,那么消息的可靠性不仅仅靠Broker自身,还需要靠成千上万的Producer。
概念介绍
1. 推模式(Push)
在推模式中,消息队列