00:00
来,同学们,接下来请跟着杨哥,我们呢,正式进入实操编码的阶段。在点对点的消息传递域当中,将目的地称为队列,那么换句话说,通过前面的讲解,我们知道了MQ里面的目的地,再细化有两个,要么是队列放到要么是主题,那么接下来我们要做的事就是编码。那么在这块我们呢,根据前面所讲,我们是不是访问GDBC的时候有一套套路,那么一样用Java来编写MQ的时候,一样会有我们对应的模式和套路,那么说穿了就是对这个整体框架以及destination目的地的理解。好,那么理论知识啊,我们先编写完代码以后,咱们再过来说,那么为了节约时间。杨哥呢,直接呢,已经先建好对应的工程,那么这个时候我们呢,第一步一步一步来开始,那么一干嘛创建。
01:15
链接。公差,那么这个时候大家请看。Active MQ connection factory,那么按照编程的套路来,你一个公差那么过。现在第一行写好,但是我们要看一下底层的源码,那么首先这个active connection factory我们都明白哈,那老师你按照你的这个套路去讲,我明白了connection factory create要创建什么connection,可是我们在这我们得告诉人家你active connection,那你连哪个啊?那我们在这是不是要告诉人家我们的active MQ是不是我们的136这个IP的8161这个网段啊,就好比你现在连一个数据库啊,你得告诉人家你的数据库地址在哪,你不能瞎连吧,没个地址啊,所以说我们看一下底层源码,那么。
02:12
点大家请看。他说如果。主人,当你写这么一个。代表底层调用的是这么一个,调用的是this,好,我们再来看this,这说白了你是调用的是它,那么你看它有个default broker URL,你再来看。这个又是什么呢?那么大家看default broke URL,说穿了这个就是我们什么,等于我们前面定义的一个产量,这个产量就是我们的什么东东,你看下来。什么开头,TCP开头一般哈,以前我们访问他们T是不是叫HTP冒号,Local host8080,但是现在到MQ来而言,他换了一种通信协议叫TCP,那言下之意就是说我们在这。
03:09
干嘛需要绑定我们的一个默认的MQ的地址啊,你连连连连连,那你得告诉我你MQ在哪吧,地址加端口号就有点相当于我们用rest风格访问一个微服部,你是不是得告诉我地址和端口号啊,这是第一步,那么第二步我们呢,大家看一眼,这个构造方法是有多个方法的重载,那么什么意思呢?空参一个参三个参,这个这个这个,哇,原来一个连接工厂有这么多,那杨哥为什么要看这个源代码呢?深刻不妨我们先学一个最多的三个什么意思啊,Set user。哎,用户名密码不URLURL前面讲过了,就是我们MQ的地址,那么这个用户名密码是什么意思啊?那么你懂的,前面我们是不是说过,你反问这个时候默认的用户名和密码是不是in密码,那假如说你把它改过了,你不再是用默认的dindin登录,那么在这块你得告诉人家,如果说你用的是默认的,那么恭喜你,那么干什么呢?我们呢,可以用这个构造方法,那么言下之意就只需要告诉人家一个地址即可,而且根据前面我们的什么。
04:27
源码的解读我们都会知道,人家以什么开头,TCP开头,那么我们呢,直接过来粘过来,那么跟它一样,是不是定义一个我们的产量,那么假设哈,我这块呢,就是我自己的叫active MQ,那么URL,那么现在是这个呢,是杨哥自己地址的,OK,那么好了,那么这这不是不能写啊,同学们都明白我这是不是可以写TCP什么,但是这个是不是就写死了,编码规范不是特别好,那么在这块我们干嘛?TCP冒号,那么192.168.111.136冒号61616OK,那么把这个扔过来,那么就代表创建连接工厂。
05:18
按照。给定的URL地址,那么呢?采用默认什么用户名和密码,第一步同学们没问题吧,那么来第二步,那么呢,通过。连接工厂。那么获得连接。Connection。这步。走起,那么言下支线,那么同学们都是按照我们规范来,那么active MQ connection function,第二干嘛create,大家看这是不是有create connection,然后过了那么这块标红了,那么什么意思啊,是不是没有抛异常了,因为这种东东是吧,我们神写我就直接往外抛了,那么try catch呢,太长,那么这边干嘛变量插过来,我们第二步是不是就获得了我们的什么东东?
06:21
Connection。那么获得连接。Connection,然后再加一步干嘛并启动。反问,那么第三步我们呢,直接过来。或者这个呢,直接写,那么connection,第2START,那么言下之意,第一步factory connection factory,第二步connection,那么这个时候start说明是不是连上这个地址了,那么切记啊,那那就说明什么,是不是得保证你这个地址啊,活着听懂了吧,防火墙啊,网络协议这个讲过了,那么很多同学在初学的时候都是active MQ的安装配置没问题,最后访问不通都是因为防火墙啊,还有这个权限啊,这些没问题,这些有问题对吧?那么好,那么这个是home,是他的主页。
07:13
队列,请看大家看现在是不是空空如也,什么都没有,那么待会儿我们是不是要的推送上去一个消息,好,那么接下来,那么这是我们的第二步完成,那么根据我们的第三步干嘛?是不是我们需要创建绘画?Session。能跟上,那么这个时候就来了关键点,那么开工,那么connection.create session。请大家看对应的吻合的参数有几个?是不是有两个啊,好,一个叫布尔型,一个叫in特型,这两个干嘛?在入门级别hello word的阶段,同学们请无视,直接调着用,听好后续我们会详细的讲,第一个参数叫事物,第二个参数叫签收,那么现在我们都先用最普通的基础的带大家入门,请先不要过多的关注好,那么这个时候,那么在这块呢,它有两个参数,那么。
08:25
第一个。叫是我。那么。第二个叫签烧好吃是什么?你先不要过多的去解读,先照着写,那么是否我们先用简单的不开启,那么天烧,那么大家看我们用什么呢?Out凸ACK,那么这个默认,那么言下之夜out凸什么意思啊?是不是要自动的意思啊?好,这是我们的三步,好,那么这个时候玩火。那么大家看三有了,那么第四一步我们要创建目的地。
09:08
Destination,那么前面讲过了,再具体细分一下,你这个目的地具体是队列还是什么主题?脱皮考好目前我们先用队列,那么言下之意,我们要干什么呢?接下来。我们呢,三声点可艾,那么来同学们大家看我这是不是叫创建Q队列,那么你得告诉我这个队列的名字啊,那么O了还是这样常量呢,我们定义在上面不写死啊,那么。Q。内幕O了,那么言下之夜,同学们这一块我们呢,就叫。Q。那么叫零一,好吧,来,那么这块粘上来,这个就是我们的什么呢?第四步,那么一样,大家请看这个是不是要队列,那么当然了,那么同学们如果说你不用队列呢,那么大家请看destination destination可不可以完,那完全可以呢?大家可以看一下我们这个destination是不是叫目的地啊,那么现在写的编码有点像我们Java集合类的什么connection。
10:28
那么这个时候,假设我connection等于六。Every list这行代码都写过吧,那么有点类似于什么,但是大家都知道connection接口下面是不是有两个接口,一个叫什么东东list,另外一个叫什么set,那么言下之意,这个connection就是我们的destination,有点类似啊,注意它们两个都是接口。那么来我们来看一下它的组织架构。点开。
11:00
大家看什么东东,是不是接口那么好了,来看看它对应的,大家看这有个队列,大家再来看这还有个什么东东,脱皮考,那么言下之意是不是我们呢,基本上就是。我们的目的地destination,那么更进一步,它就相当于我们的collection接口,一般我们用list接口或者是set接口一样,一般我们在这儿用的是队列或者是主题,那么请看目的地队列或者主题,所以说一般我们编代码都是用子接口,是不是比负接口更加强大,负接口是高度的抽象和规范,那么好,那么我们在这我们可以把它改成QUEUE,那么这个时候注意对于MQ大部分使用我们这个包哈,叫队列的有很多,你看Java集合类是不自带着一个,不要引包,引错了,尽量引这个GMS的,那么好,QUEUE,那么这个时候就是我们得到我们全部相关的内容。那么言下之见,你这样写destination也可以,只不过按照杨哥的习惯,我们更具体一点,给人家说清楚,我们创建队列,我们就放在队列里面,相当于我们的目的地。
12:16
就是队列,也就是说第一种说法是放在哪,放在目的地,那么再进一步目的地,哪一个目的地的队列目的地还是主题目的地好,那么这个是我们的第四步,创建了我们的。目的地,也就说具体呢,队列好,那么接下来那么第五步,那么同学们干嘛呀,是不是有三创建的目的地,就是我们要把我们生产的东西放到哪,那么言下之意。放到队列里面,那么由谁生产?那么所以说现在我们要创建什么消息的什么生产者,好,那么同学们请跟着我来一样session,第2CREATE,你看都是玩这个session,其实没什么难的哈,那么大家看producer,那么这个时候请看这是不是有个目的地,那么也就说你请谁,我请一个消息生产者生产什么生产消息放哪啊?放到我们MQ目的地队列里面。
13:19
这个时候直接拷贝过来,那么大家请看那么一样。这个时候就是我们的消息的生产者第五步玩火,那么好,那么接下来我们呢,既要呢给他呢,开始呢发送消息,那么比如说我们现在通过使用消息生产者干什么呢?生产三条消息发送到。MQ的队列里面。好,那么这时候同学们请跟着看负循环,那么三条消息,那么小于等于三,我从一开始哈,那么我一般不大喜欢说第零条消息,那么嘴巴上我们中国人习惯呢,都是第一条,第二条第三条,好,那么接下来开工,那么。
14:14
然后呢,我们呢。接下来我们呢,就要按照什么呢。这个时候是不是要创建消息,那么比方说也就是我们的发送给杨哥留言的那张答题卡,那张留言卡,好,那么这个消息过来。3.create,大家请看我们先用最简单的干嘛,Test manager,你可以把它理解为。一个字符串。这是一个什么最简单的,好那么你这个消息要发送一些什么呢?那么这个时候message,那么OK,加上我们这个I代表发送了第几条成功,好那么大家搂眼,那么你这个是用session创建了什么消息,这个就行,好比什么东东。
15:16
学生们。按照杨哥的要求写好的面试题。消息好,那么这个时候我们过来。叫test message是个字符串,那么好了,你呢?一个同学过来问了三个问题,写在这张纸上面,形成了test message,那么最后干嘛?那么我们来看第八步,干嘛通过消息生产者发布?那么言下之意是不是通过我的message?
16:05
通过我们的message producer。发送给MQ,那么这时候大家请看,你看这块现在是不是还是灰色呢?没人用过吧,那么在这要点干嘛用send的方法,你发送哪个呀?我发送past message OK,那么言下之意。三条我推了三次,好,然后最后那么第九步,那么干嘛,是不是释放或者是叫关闭资源啊,你使用完了得关闭,那么OK message producer,第2CLOSE方法那么一样顺着申请干嘛,Do关闭,那么。Closer,然后呢?接下来我们的connection。第二。Close连接中断,那么如果一切顺列到这儿,明白没消息发布到MQ。
17:08
完成,那假设一切顺利,我在后台能够看到这儿,那么打到这句话,那么是不是说明我们的程序程序运行通过呀,那么当然最终我们要看的是什么概念呢?要在我们这台机器上面干嘛?你看现在这个队列是不是一条都没有,那么按照我们现在的编程过来应该又过来几条三条,好,那么同学们。从这开始,我们呢,1234。九步那么难,完成了一个基础的编码,那么接下来我们来来看看我们的程序是否正刊的运行有问题,咱们再说,好,同学们运行跑一下。大家看消息发布到MQ完成,那么接下来我们呢,来激动人心的时刻点一下我们的队列,这个时候一看来Q01,那么请问是不是按照我们之前。
18:05
写过的Q01,我们的队列名称是不是投到了我们MQ里面的?队列零一号里面,我们大家请看过来。三。030,那么这些是些什么呢?不废话,那么大家请看这个叫什么?待处理的消息数量现在说明什么?我们active MQ收到了几条,三条,为啥你这是不是负循环三次发了三条,说穿了就是调用了三次,然后发送那么过来看消费者数量现在有没有没有呢?同学们只是把。你们的提问?三个提问交到了班长MQ的手上,现在消费者杨哥还没过来呢,消息排队的已经有三张提问卷了。那么。杨哥一题都还没做,那么这个时候消息还没有出列,那所以说这个时候我们呢,通过控制台也可以看到,但消息的消费者数量,入队列的出队列的,好那么这个就是我们对应的什么代码和控制台我们这儿可以看到,好那么控制台的说明呢,简单的说一下,那么等待消费的消费者数量,进对和出对的,那么这个东东刚才我们也给大家详细的演示过,当有一个消息进入到这个队列,那么等待消费的消息就是一,进入队列的消息就是一,那么以此类推。
19:34
等待消费的现在是三条,进入的也就是三条那么一样。消费以后们没完了,那么等待的将会变成零,进入队里时间出队里的数也会是直间再来一条等待的时间进入队列的就是二,那么我相信这张表和刚才的英文翻译,那么同学们应该瞬间秒懂,OK,好,那么这个就是我们消费生产者的上手代码。
我来说两句