RabbitMQ

MQ: 

 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.关闭连接

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值