00:00
同学们,我们上节课呢,已将将C1啊,最难的代码C1写完了,剩下的代码都简单了,例如写个生产者是吧,发消息咱试一试呗,对,试一试啊,所以说那么C1写完之后呢,我们写一下生产者。来。到这边生产者给它起个名字。生产者的名字呢,我们已经给他想好了名字,准备叫,这就叫product行吧,哎,如果没有重名的情况下呢,就叫它。Produce是吧,我看一下有没有重名啊,我我我进来。走一波,发现好像不影响,因为我们最开始这个位置写了一个是吧,但是现在由于不在同一个包啊,所以说呢,还是不影响。来这个是。写上叫。私信。死心。这个队列。对立是吧?之什么呢,生产者。
01:02
这个代码。完了呢,紧接我们再往下。生产者代码呢,他只负责你看这儿呢,他只负责发消息给一个普通的交换机就可以了,他根本不需要知道后面这么麻烦的一件事情,所以他作为一个正常情况下只需要发一个普通交换机,哎,知道是张三这个ROK就可以了,所以呢,我们把这个之前用到的这个叫死信交换机,不是是普通交换机的名字拿过来就行了。拿过来之后,紧急开始写。这个连接新道啊,这都这都老生常谈啊,非常的次数非常多,抛出异常。王者,紧接着我们接下来。这里面呢,正常情况下应该是先声明这个交换机,但是没有必要声明,因为在我们的CC是吧客户客户端一吧一那边已经声明过了,一旦声明过了再声明的会报错的,所以就不要再声明了。
02:04
对,不要再声明了。不要再生病怎么办呢?我们紧接着紧接着就直接发消息就可以对吧,但是你要注意你发的消息是一个。延迟消息。或者是叫死信消息。也就是说哎,死信消息,因为为什么叫死信消息呢?因为你要设置TTL。的这个时间,这个TTL是英文单词啊,叫做是吧。完了呢,To ten。三个单词啊,你看。叫TTL。啊,反了是吧。对,就是存活时间的意思啊,那T啊T啊简称。三个英文单词首字母啊,就是一个存活时间的问题,所以呢,我们接下来发消息。准备发多少消息呢?等会儿啊,我们准备发多少消息呢,我们准备发个发个十十条吧,啊,发个十条。
03:04
发个十条消息当中呢,我们看一看这十条消息,这个被放到死心队列当中的样子。好吧,我们发发一下啊发呢就用这个叫哦负I对。完了呢,这块呢,从一走起,从一走起完这个位置11对吧,是十条,不是十条,一二三四五六七八九十嘛,11是不是不包括对不包括完了开始发消息,消息的内容呢,还是老方案呢,就是还是例如加一个in for,完了呢再加上一个I对吧?这样式每个消息就不一样。王锦杰给我发消息。发消息是basic publish对吧,Publish。完了让你写交换机的名字,你把交换机名字写上,又让你写rolling k,那ROK不用想写是吧?不用想,肯定是张。三对完了再往下你写写参数,原来咱们参数都是那值都不写对吧,但是本次得写啊,完了再把消一体啊message点获取消息对。
04:11
本次这个参数为什么要写呢?是因为本次你要设置死信呢,你要设置TTL啊。所以我们迫不得已没什么办法了,就必须得写这个参数。而这个参数怎么写呢?这么写。A aqp。参数知道。AMQP。点上。这个参数它是一个内部类啊,完了呢,坡忒斯稳住new一个amq p。完了呢,紧接着这个里面构建。来build啊调build,所以说咱们可以这么的。换个行对调这个build会有感觉一点是吧?调build构建构建什么构建过期时间。
05:06
来单位是个字符串,但是呢,也是一毫秒值啊,所以要写1万对吧,1万是对是吧,完紧接着再调一个呃,Bo的构建好,就构建出了这个参数。这就完成了,注意单位啊,一定要说单位,这个是毫秒是吧,单位。是这个MS,所以要写1万啊,1万MS应该是等于十秒吧,十秒,所以我们本次设置依然是十秒钟啊。反正呢,几个参数软件每发一条信息消息,这个消息的过期时间都是十秒。在这十秒之内,如果消费者那边真的。如果在这个十秒之内,消费者C1不进行接收。那么他势必就会转发到。这个死信交换机当中。对吧,我们怎么演示这个场景呢?我们当然是将将C先启动一下,启动的目的是让他创建。
06:07
普通交换机普通队列,死信交换机、死信队列,以及普通交换机与死信队列、死信交换机和柔不进K之间的关系,给它创建出来完之后就把C关闭了。关闭之后,你就假设C已经死掉了,哎,他只要死掉了,那么没有人去接收这个普通队列当中的消息,那么一旦过了十秒钟,是不是它自然就会往这个死信交换机和死信队列这边来呀,对吧?这很正常嘛,是吧,所以我们就模这么模仿。啊,假死啊,以假死的方式来模拟一下。那么首先先运行咱们的消费者。对吧,先把它运行一下。呃,运行在这这这运行。运行完之后呢,咱们去看一眼,到底创建好创没创建好,你看一个普通的队列,一个死心的队列,你看普通队列死心队列。
07:06
完普通队列值里头有个DLX叫死信交换机,这个是死信柔钉K啊,就是这俩,这俩的意思就是都是缩写,都是英文单词首字母。完这边呢,会有两个交换机,一个叫普通交换机,一个叫死心交换机,类型都是直接类型。有了吧,有了完再进去看它们之间的绑定关系啊,绑的怎么样啊,有没有绑好。打开绑定关系啊,绑好了是吧,你看这个普通的对立普通的交换机,当然绑定这普通的队列了,完再出来。那么死信交换机自然绑定死信队列了,而且绑的是李四是吧?这都没没什么问题,所以绑的非常的好。接下来我们准备看一下消息,首先呢,我们会往这个普通队列里去发消息,也就意意味着。这个位置,哎,这个位置就会有消息,当然了在这儿就能看到啊。
08:02
将来我们在这个位置就会看到有十条消息正在准备接收。但是很可惜,我们肯定会把这个消费者给它关闭掉,一旦关闭掉呢,就没有人消费这个十条消息,那么每一个消息只有多少十秒钟,一旦到十秒钟呢,它就会转发到哪儿,是不是到到到到到这儿,所以你会发现它这块刚开始谁呢,它这个位置。它这个位置刚开始是几是十对吧,一零十完底下变成九变成八变成七完这呢,这个原本是零变成几变成一变成二变成三,最终结果最终它变成了零,而这个死心的队列当中变成几变成十了。对,这就是由普通队列过期引没有没有被消费是吧,引发的转发到啊,死心死心队列当中啊,这就是一会儿一会儿演示的一个效果。来,我们演示演示啊,首先把它停掉,对假死了停掉,哎,死完之后呢,紧接着我们把生产者连续发十条消息过去。
09:04
来发。来,发没发完不管,先进来刷新一下,过来看看。发完了,发完了,所以此时此刻同学们可以看到这个位置就是十条,你看普通队列是十条。随着时间的走啊,因为每隔十秒应该就没没一个是吧,来了,哎呀完成了,那同学说怎么这么快就直接全都过去了呢?是因为发的太快了,对发的太快了,你想想,我们虽然说设置十秒这个负循环是一个一个发的,但是每次循环发一个是不是消息,消息之间是极短的,有可能是微秒是吧,微秒几乎是十条数据,几乎是同同时发出去。其实有那么一点点先后,但是这一点点先后太时间太短了,所以导致一旦到达十秒之后,你看陆续全都过去了,所以最终普通队列当中,呃,没没有消息了,完死心队列的有十条消息。
10:03
这就达到了我们这个案例的啊一个目的啊,果然这个位置时间过期了,C死了,那它里面的数消息是吧,就会转发到死心队列当中,完了这个时候呢,你再写一个C2啊,写一个正常的C2,就可以将这个消就对死心对这消息给消费掉啊,就完成了。是吧,啊。
我来说两句