00:00
好,同学们,我们继续上一讲,已经给大家呢介绍了这个持久的队列,那么接下来我们聊聊持久的。托考主题那。在hello word的入门程序的时候,大家呢,也已经知道,无非就是把这个目的地是不是从队列换为了我们的topic主题呀。那真这么简单吗?好,结合我们的参数,持久和非持久,那么看一下我们的队列会有哪一些变化来。首先啊,杨哥为了节约时间,先写好了两个。按照我们以前的哈脱皮考,因为这个对于主题的持久化这个测试啊,因为它非持久化的没有意义,为什么呢?大家思考一个问题啊。我们大家都明白,对于我们的脱皮口而言的话,是不是先要先启动订阅,再启动生产啊?那么这个时候大家请看哈,先看看我们的case啊,现在这个人启动了,好,然后。
01:00
先订阅。只要是订阅者检测到了我们的生产者发送的消息,那大家看我是不是马上收得到,那假设你这个消息我们都知道的,如果没有开消费者,你现在我不管你是持久还是非持久。出现一个坑爹的情况是什么呢?好,你发送了,你不要去聊什么启没启动大家都懂的,干嘛是不是会有三条废消息就没有了?好,那么这些我们来看一下。脱皮考队列大家都知道了,那么我们接下来注意要把问题加难,那杨哥啊,你只说了这个脱皮考无非就是以前从队列换成托皮卡,我懂了,你真的懂了吗?一步步来加深,别忘了它是三个名词啊,脱皮考是主题,那发布和订阅呢?那么所以说现在根据刚才我们的测试啊,我们呢,这些东东都是好的,这个队列和主题不要忘了,这还有个script干嘛。
02:05
大家看这个是不是才是我们的sub script订阅呀,那么来我们是不是要绕到这边了?OK,首先我们先启动订阅,再启动生产,待会儿记得我们先演示。这个,然后再启动这个,那么接下来IP脱口持久化的,但是这个时候程序会变,同学们稍微改造,放心,我粘代码是节约时间,但是关键部分跟以前不一样的,绝对不粘,一定是当场敲,以前我们是factory connection,这是不是start,抱歉。没啦。他要被放到这儿,为什么?因为要求我们现在启动的是一个持久化的topic口主题,那么这个时候set deliver deliver mode.persistence那么言下之意。
03:00
我们现在的程序已经从以前,以前是不是直接就是start在第三行,这第一行,第二行,第三行,但现在不好意思啊,你启动的时候,这个我明确告诉我,我们生产的是一个持久化的topic皮口,那么这个就是我们的什么生产者这端做的改造,那么接下来别着急,那么我们这个消费者。也依旧要进行相应的改造,来,那么假设哈,我们来去看两个消费者,那么我们讲过了。假设我是张三对吧?这只是说后台启动以后打印出来首行是谁?来消费,由于是脱皮口的主题,我们都明白这个是不是叫订阅,那么杨哥讲过,有点类似于我们的微信公众号,你们要订阅了,我们给你发送消息,你们才能收得到,对吧?先订阅后发送,好,如果没有人订阅,我乱发,那么都是发一些废消息,那么接下来。开始这个不重要,那么接下来看杨哥修改代码了,以前是connection就直接就start了,那么你懂的,现在这个是不是也不能放在这start,那么干嘛呢?
04:08
connection.set client ID,那么客户端ID谁订阅了?我现在假设张三这个用户,这个是不是新增的,表明有一个叫张三的用户订阅。那么接下来过来。修改什么呢?Topic皮考跟刚才以前一样,我们topic皮内没问题,但是主题完了以后。我们在这边干嘛?我们需要我们的下一个来处理,那么这个就是什么?Topic的sub script,这个是什么?主题的订阅者谁呢?Top,然后完了以后请看session.create,你看这叫什么?Acid那个dor这个是不是代表一个什么持久化的一个订阅者啊,那么过来这那么。
05:01
你定义了哪个主题?是不是上面定义的这个topic皮卡,那么接下来后面有一个string,你可以把它当做叫什么mark。备注,这个倒是不重要。好,那么接下来注意了啊,你看完全跟以前不一样了,那杨哥你在哪启动呢?那么这个时候注意一定要先运行一次,这个消费者表示我预定上了这个主题还是那句话,就拿我们的微信公众号来理解,那么这个时候先运行它,那么如不论消费者在在在不在线,他都会收到,不在线的话,下次连接的时候,他就会把没有收到的消息发送给你,你现在先订阅了,你把手机关机了。好,我一推送你手机有电了,再开机是不是都可以啊,那么第五步,那么这个时候就不再是这个东东了,你看。我们干什么呢?同学们,下面的通通不一样喽。来吧。跟着杨哥来修改一下程序,这是发布订阅啊。
06:02
好了,那么这个时候我们第四步呢,是创建了我们的这些东东主题了,好接下来发布订阅了,那么我们呢。Connection。第二。第start在这一步啊,开始启动,那言下之意就是张三这个客户订阅了这个主题,那么开始呢,有关系。欧拉启动以后来同学们,那么我们干什么呢?那么这个时候就像以前是叫消息的消费者,现在是不是叫。主题的订阅者。然后干嘛呢?Receive,那么跟以前一样,这个是不是等的有时间的这个呢,一直等对吧,那么这。好,那么我们呢,这呢就是我们的。还是用message吧,Message那么怎么玩呢?
07:03
Y啊,如果说我们的,那不等于这个像换句话说是不是消息不为空啊,那么兄弟们我干嘛呢那么一句话。Text message text message等于强制类型转换text message,然后我们的message好,然后呢,过了那么打印出这个收到的19画topic皮口好,那么同学们漏,这个时候就是我们的text message get text OK,那么轮巡下来,那么我们的message就又再来拓subscript,然后第二干嘛receive,我们假设哈,我们这个时候呢是一个。五秒钟,那么这个时候的话呢,你要是不想让它跳出来,那么这块就是一个空,对吧,那么有点类似于这块是不是一直在监听啊,只要有了消息不一空,马上到这打出来,这次监听以后收到了消息,然后下一次呢,那么OK,我一直就在这干嘛等着,那么也是一种监听,好,那么接下来同学们请看啊。
08:13
这个时候,我们回到我们的toka,我们回到我们的subscribe。那么假设啊,我这儿就是一秒钟吧,再改少一点哈,注意这是不是张三,那么请看啊。在我们的这块会有什么变化,我们的发布订阅以后会有什么变化,那么请看这个。这个。这一个欧了复杂了,来同学们老规矩,先要启动订阅,再启动生产,好,那么来同学们哈,这个是我们的消费者主题的19化的,来我跑大家看我现在是不是张三好,那我张三那在这,那么现在。我们来看一下我们的topic来,Number of consumers topic这些先不管哈,只看跟我们这个相关的几个消费者,说一个谁呀,是不是就是我们这个张三,那么来大家请看,这个时候我点。
09:09
出现个什么鬼?出现个什么鬼,是不是处于激活状态的持久化的主题的是吗?订阅者啊,那么这个时候请看张三,那么知道是哪个客户订阅了吧,那么微信公众号我运营了以后,到底有哪些人订阅了我,那么在这儿是不是一目了然持激活了以后的持久的状态,那么这个时候大家看我们这个,那么这个呢。还没有这个是offline是什么离线的,那么注意这个跟我们不一样,虽然它也叫张三啊,但是你看它的目的地是什么。是不是advise temp的那个,那么这个是系统的一个哈,那么我们主要先先关注这两个,那么好,同学们请看,我现在已经有持久化的消费者了,这个时候我来运行持久化的生产者,我点。好,发送完毕,那么大家搂一眼是不是1233条,注意,由于我这。
10:05
程序故意写成这样,等几秒一秒钟,如果没收到消息,这块是不是就是烂烂的话,干嘛,是不是就跳出来session close close全部关闭了,关闭了以后同学们什么意思啊,这个灯这块是不是就亮了。好抱歉,这块灯是不是就灭了口误,那么这个时候大家请看,我们回到我们的topic皮卡有一个消费者,然后干嘛,他消费了三条消息,没错,这是刚好三条,那么所以说进来三条消费三条有一个。微信订阅者订阅了我们的上硅谷的微信公众号,本次我们发了三条消息,他收到了,全读完了,但是这个时候大家请看我们的订阅者的变化。什么情况,是不是从激活的到什么啦,是不是到离线的啦,啥意思啊,因为这块灯是不是已经灭了,因为一秒钟以后人人家你可以把它理解为是不是从激活状态变成了离线状态,除非这个灯在这块不灭,这么说明白了吗?
11:06
好,比如说啊,现在呢,杨哥再来一次啊,现在呢,直接呢,就是这个东东好,我们把它全部删掉,我们现在呢。直接呢这么干。然后呢,把这些取消取消,大家看现在是不是全部是空的,那么好,下面呢,两个人哈,张三。启动大家看张三是什么,是不是在这个,那么现在我换一下哈。我换成张四啊,那么这个ID也是张四啊,那么他关注了一个什么,不管它,那么下面我们这个张四呢,不好意思啊,那么可能我就等3000秒。OK,等三天,那么这个时候呢,是三秒钟,那么这个时候大家请看我是张三,另外一个我是张四,那么张三一个,张四一个,好,那么再来看它进行持久化的发送和发布和订阅,再来看我们这边的变化,那么好了,大家看现在呢。
12:07
二三好吧,那么发布和订阅大家请看,一运行了以后,我们都明白的这块是不是就跑进来了两个呀,那么这个时候我们直接一运行。完成三条完成。三条好,同学们请看我这一刷新。张三他还活着,但是张四是不是已经灯灭了,请看啊,这是不是张三,灯怎么样,是不是还亮着,那么这个时候大家请看这是谁?张四啊,说灯已经灭了,因为每个模拟他们订阅的时间是不一样的,我们当然希望人家不取关,但是有可能人家取关了,那么这时候什么我们在统计,在做分析的时候,是不是要有这种观念和概念,哪些是在线的,哪些是离线的。好,那么这个就是我们相关的脱皮口持久化发布订阅的一个主题,那么再来,我们来再来看一次。
13:07
好,同学们,上一讲我们先简单的做一个梳理给大家,本次主要讲解的是持久化的主题,那程序跟以前稍微有点不一样,对于生产者还好,一定要把start从第三行调到下面,也就是我start开始我生产的就是一个带持久化的topic皮号,没问题吧,但是呢,我们现在明白要有东东是什么,是不是要有订阅者啊,那么比方说现在我们是张四啊,那么张四啊,首先跟以前的程序消费者程序不一样的地方,Set client ID。谁订阅了,你订阅了什么?订阅了topic这个主题,然后有一些remark,那么这个是不是要创建一个持久化的订阅,好那么这个时候我要先订阅,你发布了我才能收得到,否则就是废消息。好,我们梳理程序,把它调干净啊,该删的先删掉,我们再来一次啊,给大家演示一个最后的一个状况,那么什么概念呢?
14:04
来同学们我们都明白,我们是不是先运行一次啊,那比方说哈这个呢。我们呢,就是一直等着哈,来张四啊,这个消费者现在呢,先注册了。OK微信公众号,我关注了上硅谷的微信公众号,你们什么时候发新的文章,新的视频推送,微信推送给我,OK,那么接下来同学们,但是为什么体现它的持久在哪呢?我关掉,同学们你懂的,这个灯一灭,它是不是从这块儿跑到这块了,掉下来了,对吧,从激活状态到离线状态了,那么好,下面这是第一步,先去注册过了,然后我又关灯了。第二步,这个时候大家看我发送。好,带持久化的过来了,那么来同学们脱皮口,现在你懂的,有一个消费者曾经注册过。然后呢,我现在呢,发了三条消息,好,大家请看此时我们的张四啊,是不是在我们的offline离线这个状态,我的问题是。
15:07
我们现在。要干一件什么事呢?我现在发送了我们的这个东东,大家觉得我们这个consumer现在启动的话,再活回来,我们这个消费者能不能收到这三条消息,大家思考一下。好,那么同学们,我们看实验,杨哥都是拿着实验给你们做出结论,先告诉我number of consumers,人家有没有注册成功过,这个张思啊,成功过,但是最后刚才杨哥自动自动的说是把那个灯给灭了,然后所以说他现在的状态是什么,跑到在这儿offline,那么这个时候大家请看我们的消费者能不能收到呢?怎么样?有没有完完全全有。那么言下之意,这个时候请看一下他的状态,什么意思啊,一个消费者。
16:02
干嘛三条消息消费成功,那么订阅呢,大家看它是不是又从离线状态跑到了激活状态了,哎,可以把它理解为这个时候你看他又在这儿一直监听着,那么这个时候我生产者再发消息。三条过来,这个时候同学们请看。第一是他离线掉下去的时候醒过来了,马上补课补回来三条,第二是不是现在它在线状态及时收到了三条,所以说这种持久化的脱皮口,理由就一句话,兄弟们,给弟兄们记好了这个笔记,那干嘛呢?一定先运行一次消费者,等于下我们的active MQ干嘛注册?类似我订阅了这个主题,关注了,关注了上硅谷的微信公众号,第一步,第二步,然后再运行生产者发送消息,那么你关注以后,无论只要你注册成功过一次,无论你什么是否在线,都会接收到,不在线的话,下次连接的时候会把没有收过的消息通通接收下来。
17:05
所以说这个持久化的脱皮口类似于我们微信公众订阅号,它的关键点是在这儿一定要先注册一次,然后干嘛。你注册成功了,后面你不要管了,然后我生产消息的时候,如果你在线即刻收到,你不在线我们会给你干什么?补课OK,会把补漏的消息统一推送给你,有点类似于什么,只要你曾经注册过,你离开一个月以后,第二个月再过来,我们会把上一个月你的历史消息发送给你,那么这种也是一种什么高可用的一种保障。好,那么对于我们的持久化脱皮考就给大家介绍到这儿。
我来说两句