RabbitMQ介绍

一、rabbitmq是什么

  • MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,举例:微信用户A给微信用户B发送一条消息需要通过腾讯的服务器转发,那么这个腾讯服务器就是充当了MQ的角色。

二、rebbitmq使用场景

  • 高并发下操作某一张数据表(订单表),数据库的压力很大,这时候就需要将所有的订单信息形式存放到Mq里,并直接返回用户端“下单成功”。然后消费者那边的mysq只能操作完一条数据才能执行下一条数据,从而减轻压力(为什么会减轻压力,这因为消费者那边的业务处理逻辑放在了一个for循环里,也就是说for只有一个循环走完才能执行下一个循环,也就是把这个阻塞的过程由业务服务承担,而不是mysql服务)。
  • 用户注册后,需要发注册邮件和注册短信。将注册信息写入数据库成功后,异步发送注册邮件到MQ里的同时,异步发送注册短信到MQ里。然后消费者分别处理自己对应的逻辑。
  • 异步写日志:处理逻辑同上。

三、rebbitmq组件说明

  1. RabbitMQ Server:他的角色就是维护一条从Producer到Consumer的路线,保证数据能够按照指定的方式进行传输。
  2. Producer:生产者,数据的发送方。
  3. Consumer:消费者,数据的接收方。
  4. queue:消息队列
  5. Connection: 就是一个TCP的连接。Producer和Consumer都是通过TCP连接到RabbitMQ Server的。以后我们可以看到程序的起始处就是建立这个TCP连接。
  6. Channels: 虚拟连接,它建立在上述的TCP连接中。数据流动都是在Channel中进行的。也就是说,一般情况是程序起始建立TCP连接,第二步就是建立这个Channel。
    1. 为什么使用channel:建立和关闭TCP连接是有代价的,频繁的建立关闭TCP连接对于系统的性能有很大的影响,而且TCP的连接数也有限制,这也限制了系统处理高并发的能力,所以channel可以将不同的TCP进行复用。
  7. 使用ack确认Message的正确传递:默认情况下,如果Message 已经被某个Consumer正确的接收到了,那么该Message就会被从queue中移除。当然也可以让同一个Message发送到很多的Consumer。管理消息是否被接收,从而进行是否清除消息。  
  8. Exchanges:从架构图可以看出,Procuder的Message进入了Exchange。接着通过“routing keys”, RabbitMQ会找到应该把这个Message放到哪个queue里。queue也是通过这个routing keys来做的绑定。如果 routing key 匹配, 那么Message就会被传递到相应的queue中。其实在queue创建时,它会自动的以queue的名字作为routing key来绑定那个exchange。
  9. Virtual hosts:每个virtual host本质上都是一个RabbitMQ Server,拥有它自己的queue,exchagne,和bings rule等等。这保证了你可以在多个不同的application中使用RabbitMQ,类似不同的Mysql数据库。

四、结构图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值