RabbitMQ

MQ: 

RabbitMQ_第1张图片

 Producer,Consumer,Broker以及NameServer;

 producer:消息队列的生产者,需要与NameServer建立连接

Consumer:消息队列的消费者,同样与NameServer建立连接,

broker:消息队列的核心,负责信息的接收、存储、拉取。

NameServer:消息的协调者

Broker分为Master和Slave,一个Master可以对应多个Slave,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave;

交换机类型:

      直连交换机:Direct exchange

      扇形交换机:Fanout exchange

      主题交换机:Topic exchange

    首部交换机:Headers exchange

交换机的作用:消息(Message)由Client发送,RabbitMQ接收到消息之后通过交换机转发到对应的队列上面。Worker会从队列中获取未被读取的数据处理

1.通过TCP协议连接,为了避免开销,引入了通道

2.通道(Channel) tcp多路复用技术

第一层:物理层
第二层:数据链路层 802.2、802.3ATM、HDLC、FRAME RELAY
第三层:网络层 IP、IPX、APPLETALK、ICMP
第四层:传输层 TCP、UDP、SPX
第五层:会话层 RPC、SQL、NFS 、X WINDOWS、ASP
第六层:表示层 ASCLL、PICT、TIFF、JPEG、 MIDI、MPEG
第七层:应用层 HTTP,FTP,SNMP等

3.在RabbitMQ中每个生产者、消费者线程各把持一个信道,多个信道复用了同一个TCP 连接。当每个信道的流量不是很大时,复用单连接可以在产生性能瓶颈的情况下有效地节 TCP 连接资源。当信道本身的流量很大时,就会开辟多连接,将这些信道均摊到这些连接中
 

生产者消息投递过程

   1.生产工者连接到Broker建立一个连接,开启一个通道;

    2.生产者声明一个交换器,设置相关属性(是否排他、是否持久化、是否自动删除、消息最大过期时间、消息最大长度、消息最大字节数等)

    3.生产者通过路由键将交换器和队列绑定

    4.生产者将消息发送给Broker

    5.交换器根据路由键查找相匹配的队列则将消息放入队列中,不然则根据生产者配置的属性选择丢弃还是回退给生产者
    6.关闭信道
    7.关闭连接
消费者消费消息过程
   1、消费者连接到Broker ,建立一个连接,开启一个信道
    2.消费者向 RabbitMQ Broker 请求消费相应队列中的消息,在这个过程中可能会设置消费者标签、是否自动确认、是否排他等
   3.等待 RabbitMQ Broker 回应并投递相应队列中的消息, 消费者接收消息。
    4.消费者确认接收到的消息
    5.RabbitMQ从队列中删除相应己经被确认的消息
   6.关闭信道
    7.关闭连接

你可能感兴趣的:(中间件)