亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

消息隊列RabbitMQ(二):RabbitMQ的系統架構概述

標簽:
中間件

前言

RabbitMQ是基于AMQP协议的,要想深入理解RabbitMQ,就必须先了解AMQP是个什么东东?

AMQP协议

AMQP即Advanced Message Queuing Protocol,高级消息队列协议,是面向消息中间件设计的应用层协议的一个开放标准。

AMQP是一个应用层协议,可以把它类比为HTTP协议,底层都是基于TCP/IP协议的,只不过它是针对消息中间件设定的,它的设计都是为了实现在生产者和消费者中间传递消息。默认端口为5672。

接下来我们来分析分析AMQP协议的设计模型(这其实也是RabbitMQ的设计模型)

image-20210516200041684

可以看到AMQP是生产者消费者模型,生产者向服务器的交换机发布消息,交换机Exchange通过设定的路由规则binding(有四种)绑定的消息队列queue发送消息。消费者订阅服务器的消息队列,接收Message。

RabbitMQ的架构分析

其实大致上和AMQP差不多,AMQP中也有channel,只是我没画出来。

  • channel:信道,多路复用连接中的一条独立的双向数据流通道,为会话提供物理传输介质,在客户端的每个连接里,可建立多个通道。

下面说一下我对RabbitMQ的理解

RabbitMQ就是一个中间件,你可以把它类比成 Redis。RabbitMQ服务器中有多个虚拟机,相当于 Redis 中的数据库。

生产者通过channel连接到交换机,先把信息发到交换机,交换机再通过路由规则(binding)把信息发送给绑定的队列。

生产者只能将消息发送到交换机,它甚至都不知道队列的存在。交换机一方面接收来自生产者的消息,另一方面,将它们推入队列。因此交换机必须确切知道如何处理收到的消息。是否应将其附加到特定队列?是否应该将其附加到许多队列中?还是应该将其丢弃。规则(也就是上图的binding)由交换类型定义,常见的交换机类型有四种:direct, topic, headers 和fanout。

注意:Exchange(交换机)只负责转发消息,不具备存储消息的能力,因此如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,那么消息会丢失!

消费者不和交换机打交道,它订阅接收队列的信息。一旦队列不为空,它就随时取出消费。因此生产者生产完信息后可以关闭,消费者不能关闭,要一直监听队列。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
14
獲贊與收藏
47

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消