rabbitmq

一.rabbitmq是什么

rabbitmq是一个异步处理消息的框架,在一个商品下单的项目中,用户成功下单后,需要扣除金额,产生订单信息,发送短信通知等等,如果整个业务逻辑都写再一个service层,则就会导致请求耗时大大增加,在高并发的场景下,这是不可取的。而rabbitmq则能帮我们解决这个问题。

当业务逻辑本身是异步操作时,我们就可以利用mq异步来处理来减少业务执行的耗时时间。就比如上面这个场景,当用户成功下完单时,我们可以利用mq来异步发送消息"成功下单啦",在另一个业务层来接受到这个消息异步的来执行产生订单信息和发送短信通知。当再异步操作的需求时,比如用户下单后我需要累加积分,我们只需要创建一个消费者来消费这个信息即可。

二.rabbitmq的执行流程

生产者将消息转发至交换机,然后路由到队列中,根据队列的先进先出特性,消费中从队列中取出消息通知然后执行一些列的操作。

mq的队列和交换机被称作为虚拟机,类似于MySQL中的数据库,在mq配置文件中,要表明是对哪个虚拟机操作。在发送消息时,可以直接发送至队列,也可以发送至交换机,由于交换机和队列存在着绑定关系,交换机在根据关系路由到队列中,记住交换机是没有存储功能的,他之负责转发。

交换机由三种,findout,direct,topic,findout交换机可以路由到他所绑定的所有队列中,direct交换机除了绑定关系外,会给每个队列设置一个boundingkey,boudingkey通常是一个单词。在发送消息时,除了要指定交换机,还要带上一个routkingkey,当boundingkey和routingkey相同时才路由到指定的队列上。。topic交换机和direct类似,只是routingkey可以是多个单词,单词之间以“ . ”分割,队列的bindingkey可以用通配符(“ * ”代表一个单词,“ # ”代表0个或多个单词)来接收多个消息。例如,当bindnigkey为*.new,则该队列会接收所有以new单词结尾的消息。

消费者从队列获取消息,消息只能被消费一次,当有多个执行能力相同的消费者监听同一个队列时,默认会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值