00:00
同学们,我们接下来呢,先写C1啊,先写消费者,第一个消费者最难写。我们打开开发工具啊。我们已经是第八个包儿是吧?第八个啊,完了呢,我们这个名字就叫CONSUMER01对。这个名字也是自定义的啊,随便起一下。完了,在这里面我们写一下,本次是为了呃,死信队列。队列啊,实战。这个呢,当前这个类呢,是消费者一是吧,消费者一对。那我们写一下。写的时候呢,一定要按照这张图写。这张图呢,就是给我们实战用的图。我们刚才已经分析过了,应该会有两个交换机,两个队列,而且普通的队列还要转发到死信,交换机成为死信了嘛,是吧。所以我们先写一下啊来。
01:02
首先第一个呢,我们先这么写你第一个由于这里面用到了多少东西呢?用到了两个交换机和两个队列,对,所以我们可以把这个名字给起好。名字也不用起,因为它都写好了,照抄就可以了,所以呢,我们不妨这么的可以把这个图呢,我们就先呃定在这个屏幕上。所以呢,我们就照着这个屏幕去写,有可能会更好一些。来把它放在放在这边啊,照抄一下。首先第一个我们有两个交换机啊,首先第一个叫做普通交换机,交换机的名称。名称呢,名字叫字符串类型的一个叫照抄啊,上方这是普通名称啊,所以。普通单词应该是,哎这么写,反正来一个。交换机。完了,把这个名字粘一份过来。
02:03
好嘞,完了再写一个,谁呢?再写一个叫死信交换机。的名称,所以把上面呢,只需要复制一份拿下来,完之后把前面改成呃,带的啊死。带完这个是啊带。摘一下。完了,把它大写。变成大写。完成两个交换机就准备好了。那么两个队列其实名字也可以提前写好。对吧,所以说我们这么的把两个名字我们看队列也提前写好吧。那也就是说我们再来。第三个这个叫。普通的,注意是普通的啊,普通队列的名称。还有一个叫。死信是吧,死信队列的名称完了,把这边都摘一摘啊,这一复制拿下来。
03:06
再一复制,再拿下来好,完了呢,把名字照着这张图改一改,这张图上都叫,叫什么名啊,叫queen是吧?来把这困呢,我们粘一下。斩。完之后呢,这个呢,是这个是使劲的困是吧,把这个困啊,我们粘粘一下粘。哎,粘错了是吧。这个是死信的队列。行完成完了,把它的变成大写。行完成,所以四个呃角色是吧,或者四个两个交换机,两个队列就出来了,剩下的呢,咱把代码写一下。
04:02
对吧,代码写的来。首先呢,我们代码怎么写呢,第一个连接新道啊,先把它挪一边啊,别挡我们的代码的视线。一会再挪回来是吧,首先第一步rabbit油条对获取。心道心道当中呢,咱们抛出这个异常,对抛出异常之后呢,紧接着我们就要进行声明了,一定要先声明,其实你最终的代码无非就是接收消息嘛,是吧,咱们可以先写一下接收消息。点上。Consumer要求你把接收消息的这个队列拿过来是吧?来看一眼啊。这儿呢?接收咱写的是C啊,所以接收的是一个普通普通队列,所以你要准备出呃,一个普通的队列。等会儿啊,普通队列不过来,我们粘一下。普通队列。好,普通完队列之后呢,紧接下方。
05:01
怎么写是吧,我们把这挪开了,完紧接我们看一眼。再联想一下普通队列问你是否需要自动应答,我们写自动应答完,接收消息这块呢,一旦不接收消息的一个回调啊,咱们都已经写好几遍了,所以呢,咱们就直接开写啊。开写,怎么写呢?首先我们是。这个啊,这个回调。这个是我们的回调的接口,对,就它。所以把它可以写到外面,写到外进行。完之后,紧接着再写一个括号。再写里面的对吧,值值呢,把这两个值粘进来啊粘哎,粘一个过来。不不对啊,这名不对,把这个名叫message。好,行了,完了再写一个箭头。
06:00
接头之后呢,紧接着我们把它放进去啊,这就是接收哦消息,另外一个同学们都知道我们不写是吧,那就是空着就行了。这就是接收消息,完了,消息的内容自然在这里打印。你一个字符串类型的完了message.get诶。完之后再来一个UTF杠八对,这样编码机就不至于乱了是吧?完了,这就是正常一个接收消息啊,我们已经写了很多遍了。对同学们来说应该都简单。完之后再往下呢,我们是在这之前其实应该先声明对不对,因为我们这个两个交换机加上两个队列,在咱们的这个这呢,在咱们的这个什么呢,MQ当中是不存在的,没有。所以你应该先声明一下。来声明一下啊。
07:01
生灵。交换机。注意,是死信和。普通的交换机。对,类型为。Direct是吧,直接类型。怎么声明呢?已经声明很多遍了,我们就直接开始写,首先把交换机的名字咱粘过来,这是普通的。类型呢,咱们用这个枚举吧,好吧,枚举类型,枚举指定类型完之后再来一个死信交换机。这个是普通的,这是死信的,完了之后呢,声明他两个之后呢,咱们再去声明对立啊。队列,队列也是两个,一个叫呃声明,叫死信队列。对完之后呢,再声明一个普通队点。那所以我们就接着接着这么写了声明,一个死信,呃。与和啊和普通的队列。
08:03
完之后呢,写一下。嬉闹。队列声明。首先是队列名称是吧,队列名称呢,普通队列名称咱们先写一下普通队列名称完,第二个参数呢,问你是否需要持久化,我们可以不用不用持久啊,也不需要共享啊,也不自动删除。啊,也什么参数都没有,对,什么参数都没有,这是普通的啊,接下来这个是死性的。哎,也是也是一样啊,也是一样,那么其实死信和普通队列之间是有区别的。死信跟普通队列不一样啊,我们现在可以拿过来看一下了,真的。来先看这张图啊,先看这张图。这张图当中,它是一个正常的队列,其实没什么怀疑,那么它是一个死心队列。那么正常队列一旦成为死气,注意一旦因为这三个原因之一就行啊,只要之一就行。
09:02
完了,例如我们本次以什么原因呢?以这个叫过激事件,假如队列当中的消息过期了。我们本次设置过期时间为十秒钟啊,我们就以十秒为例啊,十秒钟过期了,成为了死系,注意成为了死系是由普通队列,一定要注意看是由普通队列。转发给谁的?转发给死信交换机的。也就意味着这个普通队列,你要设置一定的参数,才能将自己内部的信息转发给这个死心交换。所以咱们平时声明队列,你看就是这么干的啊,就是这么干的。所以我们粘一下啊,因为为什么粘一下呢?因为要要不一样啊,上方这个是下这啊下面这是死信队列,上面这是普通队列,它俩不一样,哎,马上不一样了。死信队列呢,按照这张图来看呢,就是一个普通的队列。
10:03
将来他也会被一个普通的消费者所消费,但是这个普通的队列其实不正常,不正常在哪呢?他必须要设置一定的参数,对才能转发到死心交换机,所以就用到了,注意看。普通队列当中这个参数咱们从来没用过,今天就要用到了。就靠这个参数。指明这个参数的内容,他才能做到成为死信之后。转发到死信交换机。并且转发到死刑罪里。所以他到底要写什么东西呢?要写这些东西。来。把这。我们特意呢,来一根线啊,来一个挡挡着的线对。完了,下面这个死信队列没什么问题啊,但是上面这个普通队列,他要在这里面准备一个参数。
11:01
让它躲开啊,反正我们看一下它的参数是什么,是一个卖。看见吗?是一个map,所以呢,把这个map粘过来,这就是他的参数。Map可以设定N多个参数,完了你把参数再填里面,那么这个参数到底填什么东西呢?第一。咱们本次说它是由于过期导致的是吧,就例如呃,过期事件。国际事件。那么过期时间呢?我们打算设置成十秒钟。行吧,行,那么过去时间我们等会儿再说,接下来我们先说张图当中最明显的一点,叫它一旦成为死信,就要转发到死信交换机,对吧,转发到死信交换机,所以最明显的不是过期时间,应该是。这个叫。哎,正常的一个队列是吧,呃,正常的队列应该要设置过期。
12:02
之后的死信,死信交换机是谁?对吧,交换机是谁。所以说这个位置要填写。死信交换机这儿。怎么填呢,这么甜。这是固定的啊,就是你看死。完了杠完了呢,Later是消息。这杠。交换机对完了后面呢,再把你这个叫死心交换机填了。你看交换机,这就相当于一旦正常的消费不能消费掉,这呢一旦正常的C不能消费掉,他马上通过这个红箭头,注意这个红箭头。就是我设置的这个参数。就可以转发到死心交换机,完了死心交换机要想转发消一道死心队列中间还有一个叫。
13:02
李四对,这李四是死信,柔廷黑,对,所以光设置交换机不行,你光设到交换机,交换机并不知道怎么去路由这个消息到达死心队列,所以这个位置呢,要势必再加一级。加急什么呢?呃,要设置。死信柔K。所以这个位置复制下来。把这个死心的后面这个交换机改成ROO。完了,把这个位置改成呃,李四。对,礼仪四。把它改是李四不是吧,我看一下是李四,因为他报了个波浪线嘛,是吧,所以说多扫两眼发现没有什么错误。没了吧,没了。诶,这就是我们的一个一个一个内容,对一个内容,那么过期时间,对过期时间您可以在这设置。
14:04
这呢,也可以这么设。点上扑腾。完之后呢,再来一个杠,这叫message杠,TTL,哎,这就是过期时间,过期时间呢,你可以写呃,叫10,注意啊,它单位是毫秒的,所以你得写1万,1万才是十,呃,十秒对,它等于的是1万。MS毫秒,对。所以就这么写。对,当然了,你这块呢,也可以不写。为什么不写呢?就是因为我们图拿过来。也可以由生产者发送,当他发送这个叫消息的时候,可以跟他说,说什么呢?说十秒钟,哎,十秒钟就过期了。所以呢,你可以在这个位置去设置过期时间,同时也可以在生产方去发消息的时候,指定说过期时间是十秒。
15:03
比如说这个过期时间是有两处设置的,一处是在普通队列这个位置设置成为死信,转发死信交换机时可以设置死这个消息的过期时间,同时也可以在生产方发的时候直接设置过期时间。我们在企业上班,一般是在这个位置比较多,因为什么呢?因为每次发消息诶,你发一条我指定时间,可能发第二条,我可能指指定是八秒钟。再发一条可以指定七秒,非常的灵活,要比这个位置灵活,因为这个位置一旦你设置完了,又设置十秒改不了了,注意改不了了,但是在这个发消息的位置可以随意改,然后是改成十秒,八秒,七秒,随便随便改,所以呢,我们这个位置呢,可以怎么呢?可以不设置,对由生产发发消息那边去指定也是可以的。好吧,所以我们这儿呢,就不指定了,注释掉了。
16:02
所以这就是我们的一个普通队列的设置方式。那我们的死心队列有什么可设置的吗?死心队列呢,没有什么可设置,对,所以你会发现这里面不存在,呃,不不存在这个这个死信队列嘛,不存在任何设置,但是呢,是这样的。交换机有了,两交换机都有了,两大队列也声明了,而且这个普通队列也能成为死讯之后路由到相应的交换机以及相应的肉配,还差什么呀?还差绑定关系,也就意味着你得把普通交换机跟你的普通队列之间通过张三绑一下。以及你的死信交换机与你的死信队列之间也要绑定一下,对吧,所以差两个绑定,诶咱们把它绑定一下不就好了吗。所以上面这两个都完成之后。在哪个位置呢?在这个位置。
17:00
我看这是,这是普通队列是吧?这是死心队列,哎,我们拦了一下,完了在它的下方进行捆绑。对,绑谁呢?等会儿啊,看绑谁啊。绑普通交换机和普通的队列啊,绑这两个,他俩捆绑一波,他俩在捆绑一波,行来吧。躲开了,绑一下。这这叫绑定普通的。交交换机与对立对完了呢再绑定。死信的交换机与死信的。对立,对上面这个是普通的。对立。行了,完成绑定。还是用新道榜上,新道点上队列绑定。绑定的时候,这个是绑定啊,先写队列名,再写再写交换机名吧,再写肉丁K,所以我们写一下队列名呢,我们都抄袭一下,应该是普通的队列名,加上一个普通的交换机完之后再写上张昂昂昂。
18:14
三。别给写错了。啊,张。三。要是忘记了抄字啊,这这这个位置这不有吗?张三是吧,抄一下。完再往下再复制一份。复制一块,这块就改了,这叫带对D。EAD。De,啊,带的。队列完了再写一个de带的交换机,完之间是李四是吧,李四,哎,小了。所以呢就完成了,我们这次呢,就写完了,我们的谁呢,消费者一对不对,CC1把任务全完成了,完今天打印一下,我们这块呢要做一下打印。
19:01
呃,一会儿好测试是吧,例如这呢。等等待。消接收。消息完,点点点点点对。完了呢,下面这个接收消息要打印出来啊,打印出来的话,我们。我们把这个消息内容呢,这么的前面加一个加一级是吧,叫谁呢CONSUMER1吧,当前类啊CONSUMER11定要写上叫CONSUMER1。接收的消息是。什么内容是吧。这就完成了。
我来说两句