rabbitMQ 概念介绍
- 架构图:
- broker:接收和分发消息的应用,RabbitMQ Service 就是 Message Broker
- Virtual host: 出于多租户和安全性因素的设计,把AMQP的基本组件划分到一个虚拟的分组中,类似网络中namespace概念,当多个不同的用户使用同一个rabbitMQ server提供服务时,可以划分出多个vhost,每个用户在自己的vhost创建 exchange / queue等
- Connection:publisher consumer 和broker之间的tcp连接
- channel:如果每一次访问rabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销将会是巨大的,效率也比较低,channel 是在connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通信,AMQP method包含了channel id帮助客户端和message broker识别channel,所以channel之间是完全隔离的。channel作为轻量级的connection极大减少了操作系统建立tcp connection的开销
- exchange:message到达broker的第一站,根据分发规则,匹配查询表中的routing key,分发消息到queue中,常用的类型有:direct(point to point),topic(publish subscribe)and fanout(multicast)
- queue: 消息最终被送到这里等待consumer取走
- binding:exchange 和 queue之间的虚拟连接,binding中可以包含routing key,Binding信息被保存到exchange中的查询表中,用于message的分发依据。
rabbitMQ 工作模式
- rabbitMQ 提供了6种工作模式:简单模式,work queues,publish/subscribe 发布订阅模式,routing 路由模式,topic主体模式,RPC远程调用模式
- work queues 工作队列模式
- 在一个队列中如果有多个消费者,那么消费者之间对于同一个消息的关系是竞争的关系。
- work queues对于任务过重或任务较多的情况下使用工作队列可以提高任务处理的速度。例如:短信服务部署多个,只需要有一个节点成功发送即可。
- pub/sub 订阅模式
- routing 路由模式
- routing模式要求队列在绑定交换机时要指定routing key,消息会转发到符合routing key的队列
- topic 通配符模式
- *代表一个单词 #代表0个或者多个
spring 整合 rabbitmq
- 1
- 1
- 1
- 1
- 1