RabbitMq就是消息队列
一、什么是消息队列
- 消息队列(Message Queue)是一种用于在应用程序之间传递消息的通信方式,消息队列允许应用程序异步地发送和接受消息,并且不需要直接连接到对方。
- 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
- 队列(Queue)可以说是一个数据结构,可以存储数据,先进先出。
二、消息队列有哪些作用和应用场景
1、应用解耦
2、异步提速
3、流量削峰
三、rabbitmq 工作原理
rabbitmq 四大核心
- 生产者(producer)
- 消费者(consumer)
- 交换机(exchange)
- 队列(queue)
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
标签:Exchange,第一篇,介绍,Queue,队列,host,RabbitMq,Virtual,消息 From: https://blog.51cto.com/u_16181287/7044352