00:01
下面呢,我们继续来开发挂号订单的这么一个部分,刚才呢,咱们把接口已经完成了,完成之后呢,最后缺少这个步骤,咱们最后要发送MQ的消息,进行号源的更新,以及短信的通知,那下面呢,我们在项目中就整合进来这个MQ实验单操作,其实我们啊,整合MQ的目的为了提高咱们下单的并发性。那这个MQ呢?我们现在项目中选举是rabbit MQ作为咱们的具体使用,那这个MQ的具体内容呢?各位可以关注上硅谷股力轩有关于它的详细讲解,我这里边给各位也做一个基本介绍,然后咱们在项目中直接进行使用,那这个rabbit MQ它是怎么样一个东西呢?下面给各位做一个介绍,咱们就以这个商品订单的场景为例,说明Ruby MQ主要是做什么事情的,那我们来看一下啊,大家注意。
01:06
如果说我现在呢。在做这个商品订单的操作中,有两个服务,一个是商品服务,一个是订单服务,比如说我现在在下单过程中呢,他需要去调用商品服务中的一些内容进行操作,比如说咱们下单之后,我库存是不是要进行减少,包括要做一些操作,而这个过程中呢,咱们按照原始方式的时候,我下单过程中,这里边需要去调用库存的操作,然后操作之后呢,这里边等操作都完成之后,咱们才返回下单成功,如果说过程中比如说产生了网络问题,或者说扣存延迟等等一些问题,那会再来很差的这种用户体验,所以这个时候呢,在高并发场景下,我们这种操作是很不合适的,那咱可以怎么处理呢?我们过程中就可以用这个MQ,也就是消息队列,对它做个处理。
02:05
而消息队列怎么处理呢?它是一种啊,叫做异步机制,而异务机制什么特点?说的简单点啊,我们现在做这个订单,下单的过程中,并不一定等所有操作都完成之后才返回,而是我们可以立刻返应数据,而消息队列中间界它负责处理网络通信,比如说我现在网络出现问题,那消息队列暂存在我的网络中进行等待,当网络畅通的时候,他在发送给相应的程序或者服务进行我们的操作啊,当然前提条件你这些服务需要提前订阅了我这个队列。如果说在我的商品和订单服务中间用到这个消息队列,它这样的话既可以提高咱们的并发量,又能降低服务之间的一个耦合度,所以这是我们一个基本场景,所以咱们项目中把这个号源更新,还有短信发送就用RAMQ进行实现,因为咱们订单已经建单成功了,那我发送和这个就是更新,咱们用消息队列做一个异步处理。
03:13
所以这是我们在项目中一个基本应用,而RA呢,就是这么一种消息队列,它是其中的一种,而消息队列其实有很多种,我们用的是rub b和MQ。这里边有很多场景,比如说给大家做个说明,假如说咱们做这个异步处理,咱目前就是场景,或者说咱做这个流量消峰,比如说咱们知道这个秒杀活动,当你这个现在队列中已经满了,那我就拒绝响应,让它跳转到所有页面,这样的话可以保证我的系统不会因为超负荷而崩溃。另外它能处理这个日志,包括应解耦等等,这就是rub比MQ一个基本介绍,大家对它有个认识,然后咱们结合我们的实际场景,大家更好理解这个Ruby MQ到底是做什么事情的,就是预约成功之后,用它来更新我们这个数量,包括短信的一个发送。
04:12
那这个介绍之后呢,下面呢,咱就可以安装一下这个rub m show,那怎么安装呢?给各位说一下啊,安装方式很简单,咱用刀ER直接装就可以了,不需要别的方式,那刀客怎么做呢?第一步咱用刀ER先给它直接给它扣下来,然后我们用这个rub m q management把它先给它扣下来,我这个已经做过了,各位用这个命令在里边直接执行可以了,前提条件你把刀ER先装上,比如说咱看一下啊,我现在把这定向应该已经给它拉下来了,咱们叫刀ER隐秘值。我们看到啊,里面有这个rubic MQ,是不是给它有这个镜像,然后有镜像之后,咱们下面用这个MQ创建一个容器,并且把容器进行启动。
05:04
然后我们起名就叫Rubin MQ,这个我已经执行过了,包括咱们看一下啊,我在里边执行刀口,大家看是不是有这个rub MQ,包括之前建这个Mo DB啊,现在已经做到了,然后这里边大家注意啊,就是这个ICMQ,它里边的访问端口是5672,而你的后台管理端口是15672,如果说咱们想访问它的后台管理,那我们用这个端口号进行访问,就是加上你的IP地址加端口号,它的默认用户密码对不?这个disc,那我现在把它就来访问一下,咱们看一下它这个后台管理页面,因为现在这个doer这个容器已经创建,并且已经启用起来了。那我来访问啊,我输入我里边这个IP地址。因为我是装到虚拟机中,我这个是192.168.44.16515672,然后这里边我一回车进入到咱这个界面,在里边我输入用户名和密码都是这个。
06:14
第,然后咱们点击登录,现在就进入到我们里边的这么一个界面,所以这是关于我们说这个rub m show这么一个安装,包括它的启动,各位把这个通过刀ER直接快速装上就可以了,就这个我们就完成了准备工作,然后完成之后呢,因为咱们现在要在我们的项目中整合这个rubb MQ,那我们怎么做呢?大家先看一下啊,过程应该并不复杂。首先第一个,因为咱们后续模块可能也会用到这个MQ,所以单给他封装成一个模块,我们可以在比如在common中,咱们建一个叫ICU,然后里边引入它的依赖,引入依赖之后我们创建一个service,里边有它的发送消息方法,包括设置它的交换机,设置它的路由键,还有它的消息,然后再配置MQ这个消息转换器,这样的话就完成一个rubic MQ这么一个工具类的一个封装,后面咱用它进行使用。
07:20
那我下面给它就快速整合一下,第一部分在common里边呢,我们先见个模块,这个模块我这里边你们提前创建过了,叫rabbit u,然后在里边呢,我先引入它相关的依赖,也就是里边的这几个依赖,我把它拿过来。咱们看一下啊,第一个就是m hill这个新闻依赖,然后有一个fast Jason,为了后面使用,这是第一部分,然后引入之后呢,第二步在里边咱们创建一个service方法,就是它发送消息的方法,那我现在在里边我来创建啊。
08:00
咱们首先我在这个Java里边,比如说我先创建一个package包,然后在包里边把这个service这个类创建里边就创建一个发送消息的方法。那下面我们给他来弄一下啊,咱先等它加载完成,然后我们进行创建。好,现在啊,我们来创建,首先我先创建一个包,这个包我起名就叫com.at硅谷点上这个,比如说我们叫这个。点rabbit。点service。这个我们做创建,然后创建之后呢,在里边我们创建一个service这么一个类,然后把这类我就复制一下,就叫rabbit service。我来创建一下啊。我们写个类rabbit service,然后在里边呢,创建一个发送消息的方法,把这个代码给各位直接复制过来,咱把它也是交给进管理啊,包括注这个角rabbit。
09:07
To里,然后调理的方法做这个消息的发送,这是我们写的第一个类,然后这个写完之后呢,下面我们再写第二类来编写一个,就是关于MQ一个消息的转换器,我们叫MQ conig。我在里边把这个我也给他分解出来。那我也是在创建这么一个包。我写一下啊,com.a硅谷点上点上rabbit。然后点上这个叫做config这个创建,然后在config里边我们把这个配置类创建,在配置类中要配置MQ这个消息转换器,默认让它是一个字符串的一个转换器。这样的话,把这个我们就写出来了,所以这样的话呢,关于这个MQ的这么一个相关的封装类,我们就把它完成了,好我把依赖给它都引进来,这个做到了,然后这个做到之后呢,因为咱们操作中还需要发送短信,所以咱下面做的就是封装一个短信的一个接口,包括里边的借款内容,然后封装短信接口之后。
10:23
最后我们再来封装这个更新排片数量,以及最后去调整咱们那个接口,在接口中来调用刚才的工具类,把这个MQ更新号源数量,包括发动短信功能,最终进行实现,就这个功能我们一块儿给它完成。目前给大家讲解的就是rubing MQ是什么,它有什么样的场景,包括它的安装启动,以及咱们封装的rubing MQ相关的工具类。
我来说两句