RabbitMQ消息队列入门学习

RabbitMQ是实现了AMQP的开源消息代理软件,称为面向消息的中间件。

消息代理(Message Broker)

消息代理是一种消息验证、传输、路由的架构模式。可以使应用程序高效的解耦通信过程,核心是消息的路由程序,用来接受和分发消息,并根据设计好的消息处理流转发给对应的应用程序。


RabbitMQ的基本概念

Broker:消息队列服务器的实体,负责接收消息生产者的消息,然后将消息发送至消息消费者或另一个Broker。

Exchange:消息交换机,是消息第一个到达的地方,根据消息交换机的路由规则,将消息分发到不同的消息队列中去。

Queue:消息队列,消息通过发送或路由之后最终到达的地方,到达后的消息将处于等待消费的状态。每个消息都会处于一个或多个消息队列。

Binding:绑定,将消息交换机(Exchange)和消息队列(Queue)按照路由规则绑定起来,也就是两者之间的虚拟连接。

Routing Key:路由关键字,消息交换机(Exchange)根据这个关键字进行消息投递。

Virtual host:虚拟主机,对Broker的虚拟划分,为了安全考虑。可以在一个Broker中设置多个虚拟主机,对不同用户进行权限分离。

扫描二维码关注公众号,回复: 884438 查看本文章

Connection:连接,将生产者、消费者、Broker连接起来的通信网络。

Channel:消息通道,连接生产者和消费者,客户端的每个连接里可以有多个消息通道,每个代表一个会话任务。

Producer:消息生产者。

Consumer:消息消费者。


消息投递到队列的过程:

1.客户端连接到消息队列服务器,打开一个channel。

2.客户端建立一个Exchange,并设置属性。

3.客户端建立一个Queue,并设置属性。

4.客户端使用Routing Key,在Exchange和Queue建立好联系。

5.客户端投递消息到Exchange。

6.Exchange接收到消息后,根据Routing Key和Binding,进行消息路由,将消息分发到一个或多个消息队列中。


RabbitMQ为了数据安全考虑,支持消息的持久化,即将数据写到硬盘上面。分为Exchange持久化,Queue持久化,消息持久化。


消息队列的好处


如上图,在不使用消息队列服务器的时候,用户的请求数据直接写入数据库,在高并发的情况下数据库压力剧增,使得响应速度变慢。但是在使用消息队列之后,用户的请求数据发送给消息队列之后立即 返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。由于消息队列服务器处理速度快于数据库(消息队列也比数据库有更好的伸缩性),因此响应速度得到大幅改善。

消息队列具有很好的削峰作用的功能——即通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。 举例:在电子商务一些秒杀、促销活动中,合理使用消息队列可以有效抵御促销活动刚开始大量订单涌入对系统的冲击。

猜你喜欢

转载自blog.csdn.net/wanderlustlee/article/details/80307016