每日一句
Human beings are designed for many things, but loneliness isn’t one of them.
人类能应对许多问题,但孤独并不在其中。
概述
RabbitMQ 是一个消息中间件:它接受并转发消息。类比于快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是一个快递站,一个快递员帮你传递快件。
RabbitMQ 与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。
几个核心概念
- 生产者与消费者
- 交换机
- 队列
生产者与消费者
生产者:向队列发送消息的一方。发布消息的最终目的在于将消息内容传递给其他系统/模块,使对方按照约定处理该消息。
消费者:消费者大多时候是一个等待接收消息的程序。很多时候生产者,消费者和消息中间件并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。接收消息的一方。当消费者消费一条消息时,只是消费消息的消息体。在消息路由的过程中,会丢弃标签,存入到队列中的只有消息体。
交换机
交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。
交换机必须确切知道如何处理它接收到的消息,由交换机类型决定是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃.
队列
队列是用于存储消息的,生产者将消息送到队列,消费者从队列中获取和消费消息。多个消费者可以同时订阅同一个队列,队列里的消息分配给不同的消费者。
队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。
名词介绍
- Broker:接收和分发消息的应用,RabbitMQ Server 就是 Message Broker
- Virtual host:虚拟地址,用于进行逻辑隔离,是最上层的消息路由。一个 Virtual Host 里面可以有若干个 Exchange 和 Queue,同一个 Virtual Host 里面不能有相同名称的 Exchange 或 Queue
- Connection:连接,应用程序与 Broker 的网络连接
- Channel:网络信道,几乎所有的操作都在 Channel 中进行,Channel 是进行消息读写的通道。客户端可建立多个 Channel,每个Channel 代表一个会话任务;
- Exchange:交换机,负责接收消息,根据路由键将消息转发到绑定的队列;
- Queue:也称 Message Queue,消息队列,保存消息并将它们转发给消费者。
- Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据
美文佳句
人们常说:“念念不忘,必有回响。”只要信念一直在,就总有被回应的一天。比别人多一点努力,你就会多一点成绩;比别人多一点执着,你就会多一点机会;比别人多一点坚持,你就会多一点收获。