00:00
好,同学们介绍完了这个GS的持久性和非持久性的特点以后,我们呢?接下来来看一下我们的下一个章节,那么就是事物,那大家呢,是否还记得?杨哥当时在做入门级别的case,这写了个first,你看translated first,然后说过创建第三步,创建绘画,那么有两个参数,一个叫事物,一个叫签收。好那。我们当时的时候是生产者TX,然后consumer TX,那么这是我直接因为节约时间哈,我的这些呢,就课间呢,直接给大家写好了,这些再写一遍,没有任何意义了,主要是给大家演示新知识的特色和特点,好,那么现在我们本次解决事物那两个问题面试当中都会问。第一个,什么是数据库的事物?第二个,数据库事物的四大特性,Acid。甚至还有数据库事务的隔离级别。那么大家呢,思考一下。
01:04
好,那么给大家呢,复习和讨论一下,刚才杨哥说的这些答案呢,一定要背下来哈,尤其是你说你都上过red MQ买SQ高级了,面试官来一句话,你跟我说说什么是事务。你说你答不出来,你是不是连被问到项目,被问到高级知识的机会都没有啊?好,那么接下来我们来看看我们MQ的事物,我们刚才说的呢,一定要详细说了啊,该记的纸上的你们也记了,那么接下来我们来看看这个事物跟我们的以前有什么区别,来,同学们先看这个啊。队列删干净。首先按照我们以前。这块。TX消息发布到MQ成功。那么是不是应该?3030有三条啊好,那么消费也一样,我们呢,都是标标准准的程序false,那么这个时候同学们请看。
02:03
干嘛消费了三条没问题吧,那么这等四秒钟以后灯灭了直接走人,那么这个时候干嘛0033。三条带消费,三条已消费妥了,灯灭了,以前灯不灭,有一个消费者灯灭了,消费者变为零,一切都是自然的、正确的。那么接下来我们的问题是。换以前的说法,我们第二次再来运行一次consumer。大家告诉我还能不能消费到那三条,不能了,为什么?因为你已经消费过了,我们只能消费一次啊,对于对立的东西,那牵扯到我们这个事物啊,也有些什么新的特性呢?你们听好,在这儿如果你是force,我们先说生产者这边哈,呃,先提前说一句。事物偏生产者,好吧,那么至于说后面这个,待会儿我们聊,那么对于我们的生产者。提交时候的事物呢,有两个选项,一个呢叫force,一个叫处,那么也就是我们这的GS的produce false和true,那么说穿了就是你这个connection的创建的session,这个绘画提交了以后是以事物还是非事的方式提交,这个对于消息的可靠性有影响,那么来这个时候同学们请看我们先。
03:21
来看看我们这first。程序就这个东东,那么来队列关闭干净了,那么接下来我们的问题是,如果是force,你只要执行send的方法就进入到队列,那言下直接就是说你现在是first,你只要执行了生产者的S方法消息,这是三条,打到那个MQ里面玩活啊,那么第二个参数啊,你必须得设置啊,那么该有的语法,因为这个传参嘛,对吧,但是注意同学们,既然是初二,那么能不能设成既然是。布尔型前面是副词,那能不能设成true呢?好,那么现在我们把它改成true了以后又有些什么样的情况呢?来,同学们现在队列是不是空的过来?
04:03
一跑。如果能够运行到最后这一句,说明程序整体没有任何问题,对吧,那么这个时候按照我们以前一点,这是不是应该是3030啊,那么这个时候大家请看。0000。哟,跟以前不一样了哟,那么不妨再来一次试试啊。我点,那么你懂的,如果一次是三条,按照我们以前是不是应该变成是吗?6060啊。那么会不会这个程序有毛病,第一次没反应,那么假设我现在点一下。大家看,不管我点多少下,是不是还是0000啊,说明什么意思啊?假设你把它设置为错,那么先执行send以后需要再执行一个提交,消息才被真正的提交到队列当中。所以说在这块的话,如果你玩的是什么。错,对于事物的开启了,那么在session关闭之前,请用session点卡来进行提交和处理,这个就是生产者事物的一个重点配置啊,保证它呢能够提交到队列。你要是force,那么。
05:13
自动提交,你要是错,一定要明明确确的要有这个卡密,好,那么这个时候,那么大家搂他一眼。现在由于我刚才是只有错没有看密,那么这块是不是全是0000,那么接下来我们来看一下,我们一跑。好,那么这个时候大家请看三零,三零回答我是不是才又变成我们刚才那样发三条的正常的结果和效果呀?好,那么这个时候我们呢,就要明白第一个知识点,对于生产者而言,Force和force。事物的开启和关闭是不一样的,如果事物是错,你开启了,一定要要commit来进行执行统一的批处理提交,相当于说是手动提交,那这个时候第二个问题,那杨哥你这不多此一举吗?以前我用个forces挺爽的,没事自动提交搞定,那我干嘛还要撮合commit?说难听点还真的,要是忘记写了commit,那我不亏大发了。那么这个时候干嘛?请注意。
06:24
同学们一定写过这个代码对吧?那么类似于commit是不是有点像我们数据库啊?那么它的意思是什么呢?如果对现在我们这是业务简单,就是一个字符串丢进去,它不可能出错,但是有可能这一批次这个消息假设有十条,那么根据事物的原则,要么一起成功,要么一起失败,假设这十条消息第七条挂了,那么我们希望到catch这本次,这是session的操作,可以回滚或者是回退。所以说一般而言,如果是正常程序,我们用。事务来提交错保证程序的高可用OK了,那么三点是吗?Commit,那假设出事了,那么。
07:07
干嘛呢?那么这个时候请看session点什么?是不是有roll back回滚啊,那么弟兄们告诉我这种关系是不是有点跟类似于我们什么写JDBC程序一样,然后又是这干嘛?那不等于session,然后干什么呀?Session点。Close最终要把session关闭啊,那么回答我这种try catch final的这种代码,大家在GDBC的时候是不是见过,那么所以说呢,在这块我们要回答大家为什么这边要用事物,OK,主要是正常情况。手动提交异常情况可以有一个回滚容错,大大加强,给你一部后悔药的机会。好,那么这个就是我们生产者测的事物相关的介绍。
我来说两句