每日一句
Human beings are designed for many things, but loneliness isn't one of them.
人类能应对许多问题,但孤独并不在其中。
概述
RabbitMQ 是一个消息中间件:它接受并转发消息。类比于快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 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 的分发依据
你好,我是yltrcc,日常分享技术点滴,欢迎关注我: ylcoder
推荐阅读
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- Python|Python实战(使用线性回归预测房价)
- IC|数字IC后端真的不如前端设计和验证吗()
- Python|教你写个简单好用的Python脚本一键自动整理文件非常适合办公用~
- python|oeasy教您玩转python - 007 - # 字符本质
- vue.js|后端开发学习Vue(一)
- Go|Docker后端部署详解(Go+Nginx)
- 后台|NATAPP内网穿透通过nginx实现一个端口访问多个不同端口服务