RabbitMQ学习笔记

消息队列的应用场景

同步调用:“添加商品”操作的业务功能有三个,可能每个业务都需要花费1秒种,那么依次执行完三个业务就花费了3秒才能返回结果。
在这里插入图片描述
异步通信:执行“添加商品”操作时,只需要给交换机发送一条消息,交换机上绑定了三个队列,交换机将消息发送给队列,三个业务服务监听队列,一旦监听到队列上有消息,就执行相应的消息。这样的通信方式只需要给交换机发送了消息就能返回结果,其他的具体业务会自行执行。
在这里插入图片描述
消息队列改变了服务间的通信方式,使用消息队列可以节省提供业务代码花费的时间。

RabbitMQ

  • 组成部分
    生产者 : 消息的生产者,给交换机发送消息
    消费者 : 消息的消费者,监听队列,一旦监听到消息,就消费
    交换机 : 交换机用来决定消息发送到哪个队列上
    队列 : 接收交换机上发送过来的消息

  • 简单队列模式
    autoAck : true
    消费者无论是否处理完,都回复一个ack true

  • Work模式
    能够实现“能者多劳”,性能强的消费者多消费。
    basicQos(1) : 消费者告知broker一次值接收一条消息
    将自动Ack改成手动Ack,处理完消息后告诉broker可以发送下一条消息过来了,这样就能实现“能者多劳”。

  • 发布订阅者模式
    此模式要使用fanout交换机。
    此模式可以将一条消息发送给多个队列,被多个消费者消费。
    弊端:不能指定队列接收,绑定在交换机上的所有队列都会受到消息。

  • 路由模式
    此模式要使用direct交换机。
    解决“发布订阅者模式”的弊端,可以指定发送给绑定在交换机上的队列。
    在将队列和交换机进行绑定时,要指定routing-key。
    在生产者发送消息时,要指定routing-key。

  • 通配符模式
    让routing-key在匹配的时候达到模糊匹配的效果。
    通配符:
    *:匹配当前级 例如:roouting-key为java.*只能匹配java.api,不能匹配java.api.yes
    #:匹配多级 例如:roouting-key为java.#可以匹配java.api,也可以匹配java.api.yes

未完待续…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值