详细介绍RabbitMQ

什么是MQ

MQ全称为Message Queue,消息队列是应用程序和应用程序之间的通信方法, 其实就是一个大队列, 
拥有先进先出的特性

作用:

  1. 异步操作: 见下面的异步操作总结
  2. 解耦: 在代码中不会将具体的业务代码写死, 而是将需要处理的数据发送给mq服务器, 以后哪个项目连接mq服务器接收数据
    进行后续处理, 可以随时变更业务. 比较灵活.
  3. 削峰: mq相当于大队列服务器, 在流量洪峰产生的时候, 需要处理的大量数据可以发送到mq服务器队列中缓冲, 先进先出.
    对于洪峰可以平缓的消除
  4. 可恢复性: mq有高可用技术解决方案(心跳检测技术), 防止mq服务器宕机
 **同步操作 异步操作区别:**
 
    1.同步操作:
    	以前controller调用service都是同步操作
    	技术: dubbo, feign
    	优点: 实时性高, 比如controller调用service, 必须马上立即执行, 没有返回结果前, 
    	controller不向后执行, 等待
    	缺点: 效率低
    	
    2.异步操作:
    	controller可以将数据发送给消息服务器, 消息服务器可以将数据发给各个service服务器
    	技术: MQ技术, 消息队列技术
    	优点: 效率高, 因为MQ中有群发模式, 多个service项目可以同时接受到数据, 进行处理
    	缺点: 实时性差, 因为MQ如果在高并发的时候, 队列中消息会堆积, 先进先出, 
    	不一定能够马上执行.

queue队列:

 队列可以缓冲数据, 排队执行, 如果接收方没有接受到数据, 则数据会一直缓存在队列中不会发丢.

exchange交换器:

交换器没有缓存数据的功能, 如果交换器没有绑定队列, 那么我们发送数据到交换器中, 
交换器直接会将数据发送出去
如果没有接收方接受, 数据会发丢

rabbitmq工作模式:

  1. hello word简单模式:
    在这里插入图片描述
    描述: 一个发送方, 一个队列, 一个接收方

       使用场景: 发送方发送数据的速度和接收方处理数据的速度相当的情况下使用
    

    2. work工作模式:
    在这里插入图片描述
    描述: 一个发送方, 一个队列, 多个接受方

       使用场景: 
       发送方发送数据的速度快, 接受方处理数据的速度慢, 队列长时间队列大量数据得不到处理, 
       内存显著消耗, 可以使用多个接收方, 抢着去队列中拿出去处理, 
       这样可以加快数据的处理速度.多个接收方是竞争关系, 一个接受方拿到的数据, 
       另一个接收方就拿不到, 另一个接收方可以拿其他数据处理.
    

    3. Publish/Subscribe发布订阅模式(广播模式):
    在这里插入图片描述
    描述: 一个发送方, 将数据发送到mq的交换器中, 交换器中可以绑定多个队列,
    这种模式是广播模式,
    多个队列中接受到的数据是一模一样的, 不同项目中有不同的监听器, 监听不同队列,
    但是拿到的数据也是相同的, 根据数据同时进行不同的业务操作.

       使用场景:
       根据一个数据需要进行不同的业务操作, 这个时候可以使用这种模式进行解耦. 
       因为不同的项目可以同时接收到相同的数据, 各自项目拿到数据后进行业务操作.
    

    4. Routing路由模式(定向发送):
    在这里插入图片描述
    描述: 一个发送方, 一个交换器, 多个队列, 交换器和队列绑定并且设置路由键,
    多个接收方监听不同的队列多个接收方接受到的数据不相同, 因为路由键设置的不同

       使用场景:
       路由模式比较灵活, 根据设置的不同的路由键, 将数据发送到不同的队列中, 
       不同项目监听不同队列,做不同的业务操作.
    

    5. topic主题模式(通配符模式)
    在这里插入图片描述
    描述: 一个发送方, 一个交换器, 多个队列, 交换器和队列绑定并且设置路由键,
    路由键中可以设置通配符匹配规则,不同接受方监听不同队列

       使用场景:
       在代码中通过路由键来控制, 数据发往哪个队列, 更为灵活,
       可以适用于复杂多变的业务操作.
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值