RabbitMq就是消息队列

一、什么是消息队列

  • 消息队列(Message Queue)是一种用于在应用程序之间传递消息的通信方式,消息队列允许应用程序异步地发送和接受消息,并且不需要直接连接到对方。
  • 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
  • 队列(Queue)可以说是一个数据结构,可以存储数据,先进先出。

二、消息队列有哪些作用和应用场景

1、应用解耦

RabbitMq介绍(RabbitMq第一篇)_RabbitMq

2、异步提速

RabbitMq介绍(RabbitMq第一篇)_消息队列_02

3、流量削峰

RabbitMq介绍(RabbitMq第一篇)_消息队列_03


三、rabbitmq 工作原理

rabbitmq 四大核心

  • 生产者(producer)
  • 消费者(consumer)
  • 交换机(exchange)
  • 队列(queue)

RabbitMq介绍(RabbitMq第一篇)_应用程序_04

Broker:接收和分发消息的应用,RabbitMQ Server就是Message Broker;

Virtual host:Virtual host是一个虚拟主机概念,一个Broker中可以有多个Virtual host,每个Virtual host都有一套自己的Exchange和Queue,同一个Virtual host中的Exchange和Queue不能重名,不同的Virtual host中Exchange和Queue名字可以一样。这样,不同的用户访问同一个RabbitMQ Broker时,可以创建自己单独的Virtual host,然后在自己的Virtual host中创建Exchange和Queue,很好地做到了不同用户之间的相互隔离的效果;

Connection:producer/consumer和broker之间的TCP连接;

Channel:发送消息的通道,如果每一次访问RabbitMQ都建立一个Conncetion,在消息量大的时候建立TCP Conncetion的开销是巨大的,效率也低。Channel是在conncetion内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯,AMQP method包含了channel id 帮助客户端和message broker识别channel,所以channel之间是完全隔离的。Channel作为轻量级的Connection极大减少了操作系统建立TCP conncetion的开销;

Exchange:message到达broker的第一站,根据分发规则,匹配查询表中的routing key,分发消息到queue中。常有的交换机类型有:direct(直连交换机),topic(主题交换机) and fanout(扇形交换机);

Queue:Queue是一个用来存放消息的队列,生产者发送的消息会被放到Queue中,消费者消费消息时也是从Queue中取走消息;

Binding:exchange和queue之间的虚拟连接,binding中可以包含routing key,Binding信息背保存到exchange中的查询表中,用于message的分发依据。

跳转RabbitMq第二篇:讲解如何在Linux CentOS 7 环境安装卸载RabbitMq