00:00
好,前面呢,我们说了一下re MQ的一些基本概念,那么作为入门课程,我们接下来介绍一下re MQ的一些核心运行机制,首先呢,我们来说一下在我们高级消息队列中的这个消息路由机制,这个消息路由呢,跟我们GSGMS里边还是有一些差别的,它呢给我们增加了这个exchange和帮顶,这个exchange就是我们上节课介绍的交换器,和帮顶就是绑定的这些路由规则。那我们一个消息是如何从生产者到达消费者呢?它是这样的,首先呢,我们这个生产者他呢给我们生产了一个消息,准备呢发布到某个队列上,怎么办呢?我们生产者呢,先把这个消息发给我们这个brokeer,也就说我们的消息代理就是我们的服务器,而这个服务器呢,收到消息以后,他把这个消息呀,给到一个合适的这个交换器。
01:00
这个交换器呢,它是跟我们这些消息队列来进行绑定的,然后我们服务器中有非常多的交换器和非常多的啊这个消息队列,消息呢,给交换器以后,交换器根据消息携带过来的路由件来判断我到底是要交给你这个队列,还是交给这个队列,还是交给这个队列,还是我一起都交给他们交换器根据这个绑定规则交给这个队列以后,我们接下来这些消费者就可以连接上这些队列来取出相应的消息了,就是说核心就是这个交换器和绑定规则,交换器不同,绑定规则不同,那么我们派发的这些消息的这个结果就不一样,那么这个交换器呢,我们上边介绍,哎,之前呢有介绍过,这个交换器呢,我们有默认有四种类型,一种呢,是得。
02:00
还有这个final topic和head,这个head呢,我们就不说了,后来用的呢非常少,哎,它呢是不是用路由件来进行判断的,而是用这些高级消息协议的这个消息头,那我们就直接来说这前三种,第一种呢,我们叫direct,哎,这个是直连型的这个交换器,它的作用呢,就是当我们发送消息时的这个路由件和我们绑定的这个件一模一样的时候,我们这个消息呢,就会派发给这个队列。举一个例子,我们呢,这有一个交换器,它的类型呢是direct,它下边呢,我们来绑定了几个消息队列,这个消息队列的绑定规则是它来接收这路由K,比如为dog的这些消息,而这个呢,绑定规则是他来接收路由K为比如我们说的这个dog party。
03:00
这个消息这个呢是来接收我们这个dog god这个消息,那如果我们发了一个消息,我们自己的路由件,我们叫dog,那么直连呢,就会直接找到这个dog绑定规则对应的这个消息队列,把这个消息呢放进去,其他的呢都不会放,也就是说只有在你发消息的这个路由件跟我们绑定的这个路由件完全一致的时候,我们才会给你发过来,这呢就是典型的我们说的这个点对点通信模型。还有final exchange,这个呢就非常简单了,如果说我们有一个交换器是final类型,它下边呢,绑定了比如三五个消息队列,当我们一个消息抵达翻到交换器以后,不管你这个消息的路由件是什么,它会把这个消息给他下边绑定的所有队列,每人都去发一份,这就是我们说的广播模式,这个发送消息的速度是最快的,这也是我们实现GMS里边啊发布订阅模型的一个参考实现。
04:14
还有我们这个topic exchange,那么它就更复杂了,它允许我们对路由件来做一些模糊匹配,然后呢,有选择性的把它发给某一个队列,比如我们这个exchange呢,它是一个topic exchange,它下边呢绑定了这么四个队列,而第一个队列呢,它绑定时用的K叫USA点井,这个井呢是一个通配符,通配符呢允许井号和星号,这个井号呢可以来匹配零个或多个单词,星号呢能匹配一个单词,注意它们是单词级别的这个匹配好,我们回过来说,如果说这个exchange下边我们来绑定了四个消息队列,第一个呢,它的绑定键叫USA点景,相当于后边你可以是任意一个单词,第二个呢叫景点new news。
05:14
前面呢可以是任意一个单词,这个呢,前面是一个任意单词,后边呢是whether,这个呢,后边是任意单词,前面是Europe,好,那如果我们来发送消息,第一个消息我们写的件叫usa.news那符合哪个呢?首先USA点井是符合的,也就是说只要是USA开头的,不管后边是哪个单词都行,那么这个消息会被放到这个队列,还会放到哪个队列呢?还会放到这个队列,因为它是usa.news它是一个新闻,也就是说呢,我们这块绑定的可以用的是news,前面这个单词我们无所谓,哎,都可以来进行幕后匹配,所以呢,它就可以再来发给这个内容,所以呢,这一个消息可以有选择性的发到两个队列上去,那剩下的呢,也都一样,比如所有是whether的,不管你是。
06:14
Sa的还是Europe的,都会来到我们这个weather的这个消息队列里边,所有是Europe开头的,不管你是news还是whether的消息,都会根据规则来到我们这个队列里边,所有以news结尾的,不管你是USA的news还是Europe的news,都会来到这个队列里边,这就是我们说的有选择性的进行某种模式进行匹配以后啊,我们再来决定发给哪个消息队列。那么总结起来来说,就是第一种它根据我们这个路由件将消息派发给一个指定的队列,我们说的单播模式,第二种我们不管路由件,将这个消息呢,派发给我们绑定了这个交换器的所有消息队列,就是我们说的广播模式,第三种呢,是根据路由件的规则匹配,我们有选择性的进行广播。
我来说两句