rabbitmq 流程图
2021-04-22 09:22:35 12 举报
rabbitmq 的组成部分
作者其他创作
大纲/内容
...
channel
broker(RabbitMQ server)
Binding
Exchange
Broker:接收和分发消息的应用,RabbittMQ 就是 Message BrokerVirtual host: 出于多租户和安全因素设计的,把AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供服务时,可以划分出多个vhots,每个用户在自己的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),只负责转发消息,不具备存储消息的能力,因此如歌没有任何队列与Exchange 绑定,或者没有符合路由规则的队列,那么消息会丢失! Fanout : 广播,将消息交给所有绑定到交换机的队列 Direct : 定向,把消息交给符合指定 routing key 的队列 Topic :通配符,把消息交给符合routing pattern(路由模式)队列Queue: 消息最终被送到这里等待 consumer 取走Binding: exchange 和 queue 之间的虚拟连接, binding 中可以包含routing key 。Bigding信息被保存到 exchange 中的查询表中,用于message 的分发依据。rabbitmq 重复消息问题解决 : 可以在消费端使用一个map存储已消费消息(redis),或者保证幂等性rabbitmq 防止消息丢失问题 : Exchange 设置持久化 Queue 设置持久化 Message 持久化 ,ACK确认机制,就是消费端消费完成之后通知服务端,服务端才把消息从内存中删除服务端1.virtual Host 虚拟机,建立连接的时候需要告诉连接那个虚拟机,可以有多个虚拟机客户端
Queue
Producer
Virtual Host
connection
0 条评论
下一页