00:03
那好,下面呢,我们就看这个代码怎么写啊。呃,那么大家看一下,我在这儿已经啊,这个工程给大家已经创建好了啊,我们不再给大家献血了,献血太麻烦了啊,太浪费时间。呃。首先我创建工程大家看啊,创建工程,创建工程呢,我们就创建一个,呃,美美的建设工程是吧,然后导入依赖,这里边只需要导入什么,我们的这个这个这个这个。MQ啊啊,这个依赖就可以了。我们打开这儿来看啊。加他只需要导入。这个依赖行,但需要注意什么呢?就是我们这个依赖啊,呃,这个版本号需要和我们使用的这个MQ这个版本要一致,我们用的是哪个版本呢。呃。
01:04
大家看我们用的是4.9这个版本。所以你这儿要用4.9。呃。需要与呃。呃,需要相同啊,否则的话你后续啊会出问题。会出问题,这点还是很重要的。紧接着呃,我们大家看啊,这里边儿我们定下了这样的几个几样东西啊,一个是。这个是呃,消息发送啊,就同步消息发送生产者,异步消息发送生产者,单向消息发送生产者,然后我们又定义了一个。呃,这个这个消息的消费者啊,呃,我们这样,我们先来启动。
02:00
先来启动我们的MQ,你不启动。我们没法没法跑,跑起来。单机的啊。启动,先启动name server。然后再启动broker。启动了。停了以后啊,我们大家再看一下这。克隆一份。我直接CD到这个到。啊,它里边。我们看谁呢?我们这样吧,直接CD consume。大家看我现在就一个啊叫topic test,因为这是什么,就我们的,最后我们从这可以看到一些东西啊。
03:05
另外。另外我们这个这个这个这个这个控制台啊,我们也给他开启了。呃,诶诶,错了错了错了错了。我我们的是是这个是吧。是这个。6MQ。呃。是这个东西啊。应该启动了是吧,然后我们访问一下。
04:01
Local。7000。然后我们这里边儿看一下谁呢,当然你可以选择这个语言啊。你选择语言。呃,我们的。看,呃,在里边。呃,在系统内部的在使用的啊,除了这个以外,你看我们这有个test,没有其他的,一共就这一页。对吧,然后我们的消息。我们的消息。To test。这这这啊,这这个这个日期这样不对啊,我们给他来个一号吧。要不然。
05:03
一号也没有,那就是就是没有这个消息是吧,那我们现在不用管它,OK。自己上传我们自己的消息啊。好,呃,那现在我们就不说这个了,打开。大家看这代码啊,我已经都写好了,这是我们普通消息的啊。就是general。杰总,这里边儿这四个代码,我们先来看同步生产者。这个同步生产者啊,大家看,首先我这里边儿,呃,创建了一个。Producer。是吧,在这。嗯。创建。六是吧,然后这里边啊,我们我们注意一下啊,这个参数是什么。
06:01
这参数就我们的。名称。参数啊。呃。参数为,呃。User。Group。呃。这个ID。就这个名称,像我就直接写名称吧,大家更更容易理解是吧,这个其实叫ID啊。呃,就是说你只要再一会儿啊,这个启动了,你再启一个进程。你再给他起一遍,再起一个进程,那这俩就是同一个,呃,这个这个producer group里边的。是吧?呃,这是呃,就是构成一个集群了,这个我们在那个consumer里边啊,我们说的比较多一些。好,再往下在这指定,不是不是name sorry,指定的地址啊就是。
07:01
指定。Name。Seven。The authorage are?然后呢,这个开启。呃,开启。对吧,那再往下啊,再往下在这,呃,我就生产消息了,这样吧,生产100条吧。啊,这里边儿我要。呃,这个生产。并发送100条消息是吧。然后这个消息里边大家看啊,这个消息我在这来了一个啊,这个这个半数组是吧,这就是我消息啊,啊,我这嗨,这加了一个啊。啊,我们这个变量是吧,啊,然后。紧接着我这没了一个message。这是谁?这是他的topic。
08:00
然后这是它的tag,然后这是我们的消息体。看到了吧,这不很简单吗,是不是?啊,然后紧接着我发送是不是发送消息。回头消息。发完消息就是获取到了谁send,我们把这个send啊呃,输出一下看看。都是什么东西?把这些搞完了。最后。关闭。它掉色是吧,给它关闭掉色。那么这个啊,呃,我们可以打开简单看一下。Send,这里有谁有send status?就是发送的状态啊,你是否成功。那么send status里边这有这样的几个常量啊,这样send OK成功了,我发送成功了啊。
09:03
然后呢,这是。嗯,这样啊。我把这几个。我我给大家往这儿写一下吧。嗯,在这儿是吧。因为那个里面不能加竖式是吧?啊,我把这个类放到这儿啊。那么这个是发送成功对吧?啊这发送成功,呃,这个倒其实没啥,我们说。写下,写下,写下。就是,呃。那行。成功,这是状态啊,就是状态。
10:07
呃,消息发送的状态是吧,就发送成功。我看一下。这个呢?你看。刷盘。超时。对不对,这是。刷盘,呃。这个这个这个超时就刷盘超时啊,需要我们大家注意什么呢?就是。刷盘不就是我们把这个内存里边给它写到磁盘吗。是吧,这个是什么时候会出现这个超时。你现在我们刷盘有两种,一个是同步刷盘,一个是异步刷盘,你异步刷盘可能出现超时吗?他不会啊,只有同步刷盘的时候,就是就是我我要把。
11:03
是吧,我这内存里边的写到这个磁盘。啊,我如果是同步的,哎,我给你写啊,成功了没有啊,你那边告诉我成功了,给我返回一个成功了,然后我才能再写下一批。如果我发给你了,让你在这呃做持久化呢,你迟迟不给我响应,那是不是就超时了对不对,那如果我要异步的呢,我的只管发。成不成功对吧,我你我不用获取到你你给我的响应。所以它这不存在超时的问题啊,所以这个刷盘超时啊,呃,当。Broker。呃,这个集群吧,设置。呃,当broker,这用不着集群,反正每一个都一样是吧,当broker设置。呃。刷盘策略。
12:01
为臀部。刷盘是。才可能。出现。的这种。这这是个异常状态啊,异常状态对吧?嗯。异步沙盘。呃,不会。出现。是不是?那再看它这什么flash slave out。这这又说到一个叫什么。这叫什么?是不是同步slave同步超时啊?同步。超市。这是slave同步超时。什么意思?这是master。这是。Must。
13:00
这是slave。是不是需要从master同步数据?这个同步数据的时候有两种,一种是呃,叫同步。啊,一种是同步方式,一种是异步方式。对吧,啊叫同步复制和异步复制。那么如果你采用的是。同步复制,那就是我。这边同步成功了,我给你个响应是吧?呃,你响应了吗?哎,我收到响应了啊,继续再同步。然后再给你响应,你再同步。那。E的,我只管这边去复制就行了。我不用管你这个响应,所以这同样的道理啊,就是。呃,当。Broker。集群,呃,设置的这个,这注意啊,这这这必须是master。Slave。呃。
14:01
的同步。复制它设置的。他master slave的。复制。方式来。同步复制时。才可能。呃,出现这种呃异常状态对吧,然后呃异步。复制,呃,不会。出现。是不是?那这个呢。Not available,那这个简单,一看名字就知道。这什么,呃。就是没有没有可用的。Slave没有可用的slave。呃,就是你设置了是这种master slave啊,这种同步复制的时候,它才会出现这种异常啊,如果你本身就没有这,我就是只有呃,只有这个master没有slave这种情况,他就不会出现这。
15:08
是不是,所以这个啊,呃,当。A broker。集群设置为。Master。Slip。嗯。的,你注意啊,仍然是。复制方式。其实我拷贝一下。和这个一样。和这个是一样的,就是你异步复制的时候啊,他也不会出现,但他就不检查。一部复制就不检查。对。这个啊是我们,嗯,需要注意的,这这他的这四个状态啊,我就给大家写到这儿。呃。然后我们再来看这个result里边还有个东西啊,叫呃message ID,这个message ID啊是什么东西。
16:05
ID实际上是由他。ID。有几个?他有这两部分构成,一会我们就看到了啊,这个是谁。这个是我们的,呃。是我们的那个那个那个那个叫什么?呃。这是我们我们broker的地址。它是broke of that。是什么?啊,后面这个啊是。呃,我们。呃。我们的偏移量。我们这个偏移量啊,你一会儿就可以看到这个偏移量实际上是依次递增的。啊是是是条数,你说啊是条数,就是你记第几条第几条这个东西。
17:00
那我们一会儿跑一下就就可以看到啊。呃,咱们这样,咱们现在让他。跑一下吧。先让他跑一下,呃,现在跑一下。其实在跑它之前啊,我还想给大家再说上几个,因为我们在这儿啊,就是最基本的这个,嗯,我们其实也可以给他设做一些其他的设置啊,对这个producer。Producer点,比如说我set什么TRY。Times when send就是当你发送失败的时候,你从事。描写了从事三三次。是吧,就是,呃。设置。
18:01
当发送,呃。失败。是。同事。发送的。测数。它有默认值啊,默认为两次,默认是两次啊。当然了,我们这个发送啊,它也是有超时时限的啊,我们可以producer点。Set。呃,这个。Said。Send message came out。是吧,哎,比如说我给他来一个。啊,5000毫秒。就是。设置呃,发送。超时。实现。五秒是吧,啊,还有默认值,默认是三秒,默认三秒等等吧,里边可以做一些其他的设置啊,可以做一些其他设置。
19:03
啊。那现在。呃,现在我们跑一下吧。运行。看能跑起来,不能啊走。给大家看。出来了吧,没问题吧,你看。那状态是什么?OK是吧?这是他的ID。A messaged。就我们刚才说的那个东西,你看一下啊,你看从哪开始,是不是0123456。是吧,往往后是不是往后递增的。对不对,往后递增的。那我们我们这个大小啊,一条这大小可不是说。他一个字讲。是不是,所以你看这这就是个数啊,然后呢,这是谁。
20:03
他就是一个。这个是我们,呃,叫。博客生成的啊,这个也是个ID,这个ID是谁生成的啊,是我们这个pro。生成的。呃。然后。然后。哎,我们看一下啊,再确认一下,我们前面不要不要弄反了啊。给俺弄反了。那这个是producer生成的。对吧,啊,这个是broke生成的。对吧。嗯,这这这这俩弄反了啊,弄反了不要弄反了他啊。对吧。
21:02
那我们继续再看啊再看。呃,这是这就是这个offset。就是这个就是在在叫,叫什么叫我们的。呃,是吧,啊,它它构成的啊,然后呢,Message q啊队列,大家看这个队列,你看这个队列。QID30123,现就是0123012302,哎,是不是轮询的。对吧。你看12345678,这是不是个数。我们前面说过,把Q加上个数,你看个数吧,往后。是每个里边这样最后分了几个,分了平均来的呗,每每个人分了25个嘛,25条消息,一共100条。是不是这?是吧?啊,然后这是这是这是呃broker name对吧?诶你看这些信息我们是不是都看到了。
22:07
然后我们再来看这。大家看这。你看现在是不是多了一个。这个some是吧。你看它里边是不是四个队列。对不对,我我们现在都看到了,好,现在再再来看这啊,再来看这。我们刷新一下。先看我们的主题。主题里边啊,应该新增加了一个。新增加了一个some。第二第二页了。是不是some?对不对。然后我们再来看,呃,我们的这个这个这个这个消息。消息里边我们找一下新,诶,Some,它里边100条,你看so。
23:04
你看。怎么回事儿?哎,他这怎么。嗯,怎么怎么怎么没收到呢。那这那这连接的有点问题了啊,那这儿连接的有点问题,因为我们这是刚刚生成的,在这儿我我们都已经看到消息了啊。就是。嗯。哎,在这。在这儿是不是这都已经看到了啊。这发送,因为这个是谁是负端给我们返回来的啊。对不对,这服务端给我们反过来,这这个消息已经成功了,发送成功了。啊,只不过这儿。
24:03
这儿有点儿意思。你看你看。嗯。你看他这这这这这。你看一下事态连接的问题,是不是你看啊,我们我们给这啊。啊,我CD。然后零是吧。嗯,零这个我们这样,如果这样看的话,其实。首先这里面我们可以看到这里边是有数据的。这是有数据,但是这这种消息我们是看不明白的啊,它里边是有的,全是有数据的啊,所以这是没问题的,这是没问题的。
25:05
啊,那。在这儿它它连接的问题,就是它连接的问题,我们这样啊,这这个代码我们不用动,它,我们一会儿可以来一个啊,我我们再看一下,我们这不是有个吗。你只要能消费到是不就没问题。所以我们一会儿可以看一下,呃,我们再直接跑一下这个消费者,然后看看看看是个什么情况,就知道他是不是泄露成功了。好,呃,这就是我们说的什么。说的这个,呃,定义啊同步。消息发送生产者,那么这样啊,我把这个代码。加了注释呢。下降。算了。放到这儿是吧。
26:00
这个就好一些了啊。OK。
我来说两句