第2章 RabbitMQ介绍
1.RabbitMQ核心概念
RabbitMQ是一个开源的消息代理和队列服务器,用于在分布式系统中存储、转发消息,从而实现应用之间的解耦、消息异步处理和负载均衡等。它基于AMQP(高级消息队列协议)实现,支持多种消息协议和客户端。以下是RabbitMQ的四大核心概念:
生产者(Producer)
生产者是指发送消息的应用程序。它创建消息,然后将其发送到RabbitMQ。生产者指定消息应该被发送到哪个交换机,并且可以指定路由键(Routing Key)。
消费者(Consumer)
消费者是接收消息的应用程序。它从队列中获取消息,然后处理这些消息。消费者连接到RabbitMQ,订阅一个或多个队列来接收消息。
队列(Queue)
队列是RabbitMQ中存储消息的数据结构。消费者从队列中取出消息进行处理。队列的特性包括持久性、短暂性等,可以根据需要进行配置。
交换机(Exchange)
交换机负责接收生产者发送的消息,并根据路由规则将消息路由到一个或多个队列。RabbitMQ内置了几种交换机类型,包括直接(direct)、主题(topic)、扇出(fanout)和头部(headers)交换机。
2.RabbitMQ技术名词
组件名称 | 功能简介 |
---|---|
Producer | 消息的发送端,也可以称为消息的生产者 |
Consumer | 消息的接收端,也可以称为消息的消费者 |
Connection | 消息发送端或消息消费端到消息队列主体服务器之间的TCP连接 |
Channel | 建立TCP连接需要三次握手,反复确认。 所以如果每一次访问RabbitMQ服务器都建立一个Connection开销会极大,效率低下。 所以Channel就是在一个已经建立的Connection中建立的逻辑连接。 如果应用程序支持多线程,那么每个线程创建一个单独的Channel进行通讯。 每个Channel都有自己的id,Channel之间是完全隔离的。 |
Broker | 就是RabbitMQ的主体服务器本身,负责接收和分发消息 |
Virtual Host | 每一个Virtual Host就是一个虚拟分组, 用户在自己的Virtual Host中使用RabbitMQ组件 |
Exchange | 交换机,是消息达到Broker的第一站。 根据分发规则匹配routing key,分发消息到Queue中去。 常用的类型有:direct(point-to-point)、 topic(publish-subscribe)、fanout(multicast) |
Queue | 队列,是消息的容器。消息放在这里等待被消费端取走。 |
Binding | Exchange和Queue之间的虚拟连接,Binding中可以包含routing key。 Binding信息被保存在Exchange的查询表中作为消息的分发依据 |
3. RabbitMQ消息传递流程
3.1 生产者投递消息
1.生产者创建连接(Connection),开启一个信道(Channel),连接到Broker;
2.声明队列并设置属性,是否持久化,是否自动删除
3.设置路由键与队列绑定关系
4.发送消息
5.关闭信道
6.如果程序退出,关闭连接
3.2 消费者消费消息
1.消费者创建连接(Connction),开启一个信道(Channel),连接到Broker
2.监听指定要消费消息的队列
3.等待消息的投递,接收消息
4.是否自动确认(ack)接收到的消息
5.RabbitMQ从队列中删除已经确认的消息
6.关闭信道
7.如果程序退出,关闭连接
4.RabbitMQ需要掌握的知识
对于开发来说RabbitMQ需要掌握的知识
交换机的工作模式
队列的工作模式
消息确认
消息持久化
消息失败重试
消息堆积处理
死信队列
延迟队列
惰性队列
对于运维来说RabbitMQ需要掌握的知识
交换机和消息队列的概念
单节点安装部署
集群安装部署
帐号密码配置
延迟插件安装
集群状态监控
web管理页面的使用
更新: 2024-10-04 18:45:38