00:00
同学们,我们接下来呢,写一写消息手动应答的代码好。那么我们要写几方呢?要写两方,第一方呢,要写工作线程,对,写几个呢?写两个,第二个呢,要写生产者。本次测试的结果就是刚才说的消息不可以丢失。一定不能丢失,我们一会儿测试的时候,会测试模拟一个场景。表示将C1或者是C2进行关闭。当关闭掉它这个线程之后。那么这就意味着这个线程并没有执行完,没有执行完的话,消息是不可以丢失的。他一定要放回队列,完了呢,被C所处理。只要能看到这个效果,就证明消息确实没有丢失,并且还被C给处理了,所以这个效果就达到了我们的核心目的。我们的核心目的就是。
01:00
消息在手动应答时是不丢失的,是对,是不丢失的。对啊,同时还在消息丢失时,应该将消息放回,或者说。放回。对。列中,哎,重新消费。重新。消费,对,这就是我们本次测试的一个核心思想,好,那我们为了这个思想,接下来进行代码的一个测试啊。我们把之前代码呢全部都关闭掉,紧接着我们再开启一个新的包。测试第三个实验。第三个实验呢,我们就包名就叫,呃,就叫瑞了是吧,第三个完之后呢,再去写我们的。生产者对消写我们的生产者谁呢?就是他先写生产者,完之后呢,再写消费者是吧,好。
02:02
来吧,写一下。八。代码切回来。名字呢,我们本次叫task task2对二。这表示是另外一个实验了是吧,另外一个实验啊,把实验目标来,把实验目标粘过来。这就是我们的实验的目标。消费。消息。消息啊,写错了是吧,消息在手动应答时是不丢失的。放回队列当中,要要求重新消费啊,重新消来。完了,本次呢,我们单独创建一个新的啊,新的对立名称。这个队列名称呢,是目的是为了告诉同学们,我们本次。呃,试试验其他的对立了,例如字符串类型,来一个。对。Task任务队列。名称。名字呢,就叫AC下划线坤。
03:06
对,就他。完了之后呢,紧接着就是我们的新的队列名称啊,对列名称叫ACK呢,主要是为了告诉学们,我们需要手动应答进行确认是吧,所以接下来。发消息,发消息跟原来一样啊,我们用首先呢,工厂也不用在创建了,直接产生呃,新道。产生信道呢完我们呢扔出啊异常抛出异常。再往下呢,我们还是像原来一样,要产生一个新的心道,自然就要产生一个新的队列,声明队列的名称咱都已经换了,再换成大写的。把它拿过来。完了呢,咱们已经很熟练了,这个是是否是持久化是吧,是否是否是共享不共享,是否是自动删除,不自动删除完了参数呢,没有是吧,咱们已经哎写都写。
04:00
第三遍了吧,对,所以这个就是生灵一个。队列,所以就不再详细说明这个参数都是什么意思了。再往下。再往下写什么呢?写还是控制台啊,还是从。控制台中。输入啊信息,所以还是用原来的。扫描对完了扫描的位置依然是控制台CSTEM点一是吧,好。完之后呢,还是老样子进行循环,问你是否有下一个消息,如果有就取出下一个消息。下一个消息,拿到消息之后变成我们的message,信息完了把信息发出去,通过心道。进行基本的publish,将消息发出去。交换机依然是不使用交换机是吧?使用默认交换机队列名称。
05:04
叫他。完,同时其他的不填,把消息转成二进制。二进制呢,如果你传入的是一个英文单词的话呢,这是没什么问题,但是就怕你传入的是一些中文的汉字,所以呢,如果是中文的汉字,强烈在转二进制时写上它的这个编码集叫UTF杠八。这样呢,不至于乱码。当然你不写呢也行啊,完再往下呢是呃,打印一下。打印一下,打印什么呢?打印表示哎,生产者。发出。消息对发出消息冒号消息是多少,咱们麦一下。到此呢,就发成功了。跟消息的生产者,其实咱们本次测试的是消费者,所以跟生产者的关系呢并不是很大,所以代码呢,呃一差不多一模一样。
06:04
好,这个就算写好了。接下来我们再写两个,注意要写两个消费者。按照文档的测试的结果,一定要测出两个消费者的效果。对吧,完我们不能再用像原来一样写一个代码,要写两个,因为他们代码不一样,在。沉睡的时间不一样。一个是碎一秒,一个是碎30秒。那为什么睡这么长时间呢?就表示一个处理消息非常的快,一个处理消息非常的慢,这是在模拟这个非常慢的场景。尤其是处理慢的这个如果一旦宕机了,对吧,或者挂掉了。那么这个消息能不能重新放回队列,再由处理快的这个消费者所消费呢?如果可以的话。就能证明消息确实不丢失。所以达到了本次实验的目的,好,接下来呢,我们写其他两个消费者。
我来说两句