00:00
同学们,我们接下来介绍一下消息的自动重新入列入队啊入队。是因为消息一旦出现丢失,我们之前只是假设消息出现丢失,现在我们说一说,如果消息真的出现了丢失,那我们应该怎么能保证消息不丢失呢?那么我们的保证的办法自然就是自动重新入队嘛。什么意思呢?这呢,如果消费者由于某种原因失去了连接,此通道已关闭,连接关闭,TCP连接已丢失,导致消息未发送ack确认。那么MQ。是吧?将了解到消息未完成处理,并将其重新排入队列。如果此时其他消费者可以处理,他将很快。安排其他的消费者来进行处理。即使某个消费者偶尔死亡,也可以确保不会丢失任何消息。
01:00
这是一个重新入列的一个一个定义或者是概念。下方呢,有这么几张图,四张图。这四张图呢,足以说明了消息是如何保证不丢失的。好,我们来看一下第一张图。第一张图当中,这个P表示生产方,它发送了消息,消息排在了这个队列中,啊,注意啊,排在了队列中。那么这个消息呢,被C1,也就是说消费者一。所吸所消费,消费的是第一个小消息,完了消费者二消费的是第二个消息。那么注意,这是一个渐进图啊。正在消费当中呢,啊,还没完,此时此刻,赶紧看第二张图。此时,由于第一条消息已经被C所接收。但是接收完之后。线,这个连接线就断了,失去了连接。
02:02
那么C一并没有向队列提出确认应答的这么一个AC未应答,而C2应不应答,它应答了,为什么呢?因为它并没有断开链接,对吧?只有C1断开连接了。好,接下来再看第三个图。那么当C1一旦断开连接,此时作为MQ,也就这个队列,必须马上知道C1已经断开连接了,并没有给给予应答。所以此时。队列当中。队列当中关于C1接收走的这个消息,一一定不能给删除,注意不能给删除。对,不能给删除完了呢,在队列当中这个第一个消息它依然是存在的。但是由于C2已经成功应答了,所以第二个消息哎,就给处理掉了。所以此时队列当中应该只有。只有一个消息了。完。此时。
03:00
有一个消息,这个消息由于C1已经断开连接了,这个消息将会给C2进行处理,所以图当中你会看到消息一又被C2给处理了。所以消息一丢失了吗?并没有丢失,处理了吗?处理了?被谁处理了?被CR处理了?C1即使断开了连接,你会发现消息一不但没丢失。还成功的被处理掉了,这就是保证如何保证消息不丢失的这么一张原理图,它是用四张图来来结合说明的,哎,这是第一张图,这是第二张图,这是第三张图,这是第四张图。这四张图足以说明消息是什么时候丢失的。并且又。丢失的消息也并没有丢失掉,又被谁给处理掉了,所以最终保证了整个消息不丢失,并且呢,消息也成功的处理完成。
04:01
那么整个核心思想就是消息自动重新入对对,就是MQ的这个队列啊,它的功能,他只要发现谁断开了连接,马上就会将消息保存下来,并且重新放到队列当中,由下一个消费者进行处理,所以达到了消息不丢失的目的。
我来说两句