00:00
同学们,我们接下来呢,介绍一下我们这个第一个啊,发布定语模式也叫善出,这个单词强行翻译叫善出,其实对应的是文档上的发布定义模式,它类似于像你看像广播一样。他的广播的意思,什么叫发布订阅呢?就是一方发,很多人接,他说广播其实更像我们的一些群,例如QQ群。你一个人在群里发消息,其他群的好友都是可以收到消息的,所以这一个人发很多人接收,所以像不像广播说像广播,诶,广播大喇叭吗?一说话全村的人都听见了。对,这就是广播。那么所以它就是发布订阅模式,当然了,强硬翻译叫删出,诶这种类型非常简单是吧,就是大广播啊大喇叭。那我们一起来对,一起来演示一下,系统当中呢,有一个默认的,我们来看一下,系统当中不止有一个默认的,你看有一个默认的,有一个默认的直接或者叫路由模式,一个叫呃删出或者叫发布订阅,对吧?啊这个呢不常用了,所以我们就不再去提了,所以里面有一个系统自带的一个默认的。
01:11
发布订阅交换机,当然了,你用它的呢,肯定没问题,你要是不用的也可以自定义啊,自己去定一个新的也是可以的。这就是我们关于啊。发布订阅,或者要删除这种类型的一些介绍。接下来呢,我们针对于这种类型做一个实战。对,实际发送一波试一试,对吧,实际发送一波完,我们怎么发呢?怎么发。这张图里头就告诉我们。首先我们作为一个生产者,对生产者要把发消息到交换机,注意这个交换机啊,完了呢,这个交换机会对应两个队列,他们绑定关系是一样的,是一模一样,都叫帮顶。那么这就意味着他发消息过来,交换机会,将消息路由给两个队列,两个队列中的消息是一模一样的,把这个消息在被消费者一所吸收,再被消费者二所消费,对吧?这就是这么一个场景,大喇叭嘛,是吧,只要说一句话,所有的人都能听得见。
02:14
这就是他的实际的情况。完之后呢,我们接下来可以去创建一下它的临时关系。例如真着他说要求交换机叫洛克斯啊,这是他起的名字啊,交换机叫log克斯,完log克斯要进行绑定,两个两个队列,这个对立的名字很奇葩,长成这个样子,这明显都是随机产生的两个对立啊。实际产生两队列完之后呢,进行直接进行绑定,对吧,绑的时候呢,这个入DK呢,什么都没写,注意啊,什么都没写。不是说真的没写,是空串,就是看不见空串。所以呢,进行了一次捆绑。完之后呢,紧接被消息方接收,完了再打印。对吧,行,我们实战一波啊用代码呢演示一下。
03:03
那用代码演示呢?我们势必要要打开我们的开发工具,把之前的代码咱们就关掉。再去写第五个是吧,第五副文代码来。代码呢叫啊five第五个,第五个呢,我们这次代码呢,是写两个接收方一个。发送网。好吧,两个接收方,而且接收方的名字呢,最好用文档的对吧,因为他已经给咱起好了,表示用接收log日志,一再来一个接收log日志,二两个接收方,完几个发送方,一个发送方,而发送方的名字叫什么日志发送是吧?啊就这么一个发送,一个发送,两个接收。对,一个发送两个技术。来咱们接一下啊。首先呢,咱写先写第一个就是第一个发送是吧,来把它名字拿过来。接收的名字叫他。
04:00
接收LOG1。这个啊,负责这叫消息的啊接收。学校交易的接收呢,代码呢,跟咱们之前写法呢,应该是一模一样,你看一如既往的要发什么要什么建立一个信道,对创建创建一个交换机,对吧,这个交换机我们没有创建过,之前创建的都是。呃,队列名称,来咱们写一下啊。首先呢,第一步用这个rabbit MQ条获取这个信道。拿到新套之后呢,我们要抛出异常。抛完异常之后呢,我们第一件事儿呢,不再像原来一样直接声明队列了,我们应该是一个声明一个,呃,交换机。交换机,对,用这个信道点上交换机的一个声明,这个是。完让你填写交换机的名称以及类型啊,把名称写上,名称呢,我们一如既往的放在外面啊,这是叫交换机的名称,完了呢,叫它完了呢,紧接字符串类型的叫交换机是吧。
05:12
X下面name完之交换机的名字叫log斯,对吧?这是他文档上给起的。那么把这个交换机的名字进行大写。完了呢,它的报错原因是因为咱少写个C啊,少写个C,交换机单词是这么写。王紧经呢,我们开始。创建声明,把交换机的名字写里面,完了同时他问你是什么类型的,那我们当然就是哪种类型啊。就是善出类型啊,因为我们辛辛苦苦不就想演示一个叫善出的一个实战嘛,是吧,哎,演示一下这种类型。发消息的一个情况吧,完了把这个类型的粘过来啊,这个类型。转过来,好,就他。就是它完了交换机就产生了,交换机产生完之后呢,紧接着我们应该再像以往一样产生一个队列,对吧?哎,声明。
06:06
声明一个队列,对,这次有交换机,又有队列了。完了呢,这个队列呢,我们打算呢,并不想给它起名字了,想打算声明一个,对,声明一个临时的队列啊,因为我们并不想要永久队列是吧,来一个临时队列就可以了。声明一个临时队列,那临时队列呢,就是用信道。进行队列的一个声明,完了再获取队列,就拿到了一个历史队列。对吧,这就是我们这个临时队列啊,临时队列呢,在连接的时候还在啊,但是在不连接之后就删除了。在他的这么几个。情况来说一下。这个临时队列。生成一个临时的队列。完了呢,队列的名称呢?这道队列的队列的名称是随机的。
07:03
是随机的,对完之后呢,还有就是当。消费者断开链接是吧,哎,断开与。与队列的连接。的时候。完了呢,这个队列。就删除了。自动啊,自动删除。这样的好处就是不至于造成像我们之前一样啊,创建了大量的队列啊,大量的大量的这么多临时的队列,实际上这些队列我们用完也就不用了,所以呢,创建一个临时队列。好,再往下,我们准备绑定交换机啊,因为交换机与队列之间要进行捆绑是吧,所以来下来。来了,绑定。交换机。交换机与。对立绑定。那怎么绑呢?我们首先是这么的,调取我们的这个叫信道点,有没有绑定啊,叫我看叫绑定,说帮顶,不叫帮顶叫队列。
08:06
困。帮顶啊,有你看这有。让你填写信道,不是让你填写队列,让你填写交换机,还让你填写关键词ROK。对吧,那你就写吧。那首先呢,咱们的交换机的名字呢,等会儿第一个是队列名是吧,队列名我们并没有,但是呢,这个位置可以返回,返回一个随机的队列名称,对吧?完了呢,把队列名称填里。之后再写交换机。交换机的名字我们已经起好了。完了再写rolling k rolling k呢,我们可以不写,因为空串嘛,是吧,刚才同学们看见了空串可以是可以空串,所以呢,到此就绑定了。绑定完之后,紧接着我们下面就可以打印一句话,什么呢叫等待接收消息呗,把接收的消息打印在屏幕上面是吧,哎,等待。
09:00
接收消息对。把接收到的。消息打印。在屏幕上。屏幕上诶,点点点。哎,打几个六,打几个六个点是吧,哎,六个点。去完成。完剩下的工作呢,进行进行接收呗,是吧,进行消息的一个接收,那接收咱们之前都写过了,无非就是这个信道,对完了,紧接着基本的consumer是吧,进行这个接收呗,Consumer接收。完把队列的名称写里头对不对?挡挡视线了啊挡视线完紧接呢问你,呃,这个确认吗?确认呗,是吧,自动确认,对自动确认就行,因为本次咱们只是想测一测能不能。接收交换机发来的消息是吧,完,紧接着再来一个接收。完了呢,其他方式呢,这这这两个参数还记得吧,一个是专门真的。
10:01
接收消息。另外一个是。这个当取消是吧。消费者取消。消息十。呃,出发的是吧,小时。的接口。啊,回调接口。那么这个接口如果你不想写呢,你可以写个杠值啊,就是说不写。完了,只负责接收消息,这个写一写对吧,接收消息这个叫什么名,我看一眼啊。这呢,叫他把它粘过来。往这儿呢一写对这一写就这一写对吧,往上挪一下,这一写完之后呢,紧接着下面呢,就写的是拉布达是吧,拉达表达式,拉姆达斯表达式,粘译过粘译过来。完了呢,括号是吧,往一粘完了类型呢就不要了。完之后呢,再写一个箭头。
11:00
完了呢,把这个接收消息这个呢,咱们写到里面。前面多了一个逗号。好完整完,一旦接收到消息,你把消息这个打印出来,这写上是吧。接受。这写什么,写控制台吧,是吧。控制台,呃,打印接收到的消息,冒号消息是多少呢?咱们再拗一下是吧,再拗一下字符串类型。完之后再来一个message,点上获取请求体,完了之后呢,如果是中文写utf杠八。就行了。我看一下啊,这个是。报错这个纳值是不是可以不填?没有这个方法是吧,我们看一下啊,这个四参构造器当中啊,必必须得写一下是吧,这么这么的吧。
12:01
我们可以简单的呃写一下。诶,这就完成不需要处理是吧。就这么简单的一写。就不报错了。好了,这就是我们经过,记住一定测试的是经过。这个交换机对生产者发消息给交换机,交换机再发消息给队列一和队列二是吧,哎,这是我们的一个其中的一个对立一部分是吧,这是接收消息,这个就是消息一啊。这就算写好了。完了之后呢,另外一个呢,就呃。其实没有必要再写,直接呢,把另外一个改一改就可以对吧,你看。消费者二说跟消费者一其实是一模一样的,从第一行代码,第二行代码,第三行代码,甚至第四行都是一模一样啊,没有什么区别。没有区别啊,没有区别,所以呢,我们可以将第一个这个直接复制啊,粘贴改成第二个。
13:04
对,这样的代码就一模一样。对吧,完了呢,这现在是由于重复性,它的提醒呢,没有关系。完之后紧接着下方打印,打印的时候呢,这个可以叫,就例如叫叫这个名字是吧,区分一下。比如这个叫零二。对,在控制台上接消息,这个是零一在控制台上接消息。他们两个接收的消息应该是一模一样,因为同是一个交换机发过来的。对吧,一个星期发过来。
我来说两句