00:00
我们接下来讲一讲死性对立啊。死信。怎么会有死心队列呢?是吧?死心的概念我们来讲一下。什么是死信呢?就是从字面意义上,死信,顾名思义就是无法被消费的消息叫死信。一些消息。被消费不了,那么他最终就成为死心,死心了是吧,死掉的消息吗?字面可以这么理解啊,但是一般情况下,这个生产者。对吧?生产者将消息投递给是吧,直接再放到队列中,那么消费者从队列当中取消息进行消费,在某些时候,由于特定的原因导致队列中的某些消息是无法被消费。这样的消息如果没有后续的处理,就变成了死信。有死信,自然就有死心队列。应用场景。
01:01
为了保证订单业务消息数据不丢失。需要使用到Robin MQ的死信队列机制。当消息、消费发生异常时,将消息投入死信队列中。还有比如说用户在商城下单成功并点击去支付后,在指定的时间内未支付的时候自然自动使用。所以呢,私信的应用场景还是蛮多的。其中第一个最重要的就是当消息不能被消费时。放到死心队列当中,目的是后续,后续等到环境好了之后,再把死心队列当中的消息再进行消费。同时下一个例子,用户在商城下单,这个这个例子体体现的是死信,它存在一定的延迟性,也就是说它可以作为延迟消息来处理。例如用户下单一般是两个小时之后,或者半个小时之后,如果你不付钱。
02:06
此订单应该会被取消掉。那么被取消掉这件事儿是由谁做记录呢?有死信做记录,死信可以在指定的时间之内。去做一些事情,或者是在指定的时间之内被消费者所消费,所以死信是有很多作用的。那么最直接的作用就是消费者消费什么,消费的时候发生异常,将消息放到死心队列当中,防止消息被丢失。对,这是最主要的一个功能。再往下死信的来源,这死信是怎么产生的是吧?死信主要有三大产生,第一消息,TTL过期,什么是TT就是存活时间嘛。消息有一定的存活时间,例如只能存活十秒钟,那么在十秒之内,如果你不进行消费,那么我们是认为此消息已经过期了。
03:07
那过期就不能再消费了。第二个。队列达到最大长度,例如队列满了,无法在添加数据到队列当中。这种情况下也会产生死心。还有消息被拒,什么叫消息被拒呢?是消息方如果进行应答时,进行了一个。否定应答。或者进行了一个拒绝应答。并且还不放回队列中。那么这种消息就会被产生死信。那么这种消息呢,就不要再被消费了。完了,把这个消费转移到哪里?转移到死心队列当中。以方便于后续处理。因为此时此刻为什么会被拒绝呢?就是因为处理不了,处理不了先把它拒绝掉,并且不要放回队列当中,完了等到有时间了,或者后期有条件了,再去处理这个消息。
04:05
这就是死信的三大来源之一啊,啊,不是三大来源啊,分别三个方向来源。接下来呢,有一张有一张图啊,这张是死信的一张实战图。也就意味着我们马上要进行一下死信的实战演练,那演练呢,就以这张图为为例啊,进行演练一下。
我来说两句