消息隊列(Message Queue,簡稱MQ),從字面意思上看,本質是個隊列,FIFO先入先出,只不過隊列中存放的內容是message而已。
其主要用途:不同進程Process/線程Thread之間通信。
為什么會產生消息隊列?有幾個原因:
不同進程(process)之間傳遞消息時,兩個進程之間耦合程度過高,改動一個進程,引發必須修改另一個進程,為了隔離這兩個進程,在兩進程間抽離出一層(一個模塊),所有兩進程之間傳遞的消息,都必須通過消息隊列來傳遞,單獨修改某一個進程,不會影響另一個;
不同進程(process)之間傳遞消息時,為了實現標准化,將消息的格式規范化了,並且,某一個進程接受的消息太多,一下子無法處理完,並且也有先后順序,必須對收到的消息進行排隊,因此誕生了事實上的消息隊列;
MQ框架非常之多,比較流行的有RabbitMQ、ActiveMQ、ZeroMQ、Kafka,以及阿里開源的RocketMQ。