0%

RabbitMQ基本概念(一)

        上一篇做了 MQ的简单介绍,今天介绍下RabbitMQ。
        RabbitMQ实在MQ的基础上做了扩充,还是生产者、消费者模式,只是在中间做了升级。那中间做了什么变化呢。上一张一目了然的RabbitMQ结构图。
RabbitMQ结构图
        其实就是把原来的Queue模式变成了Exchange(交换器、分发器)+Queue(队列)模式。

        Exchange字面就能理解他是干什么的(分发器)就是把生产者发送的消息分发到不同的Queue中;Queue还是原来MQ中的Queue(用来存储生产者发送的消息,用来让消费者消费来着)

        当然如果只有一个Exchange、一个Queue那也没有升级的必要了。所以RabbitMQ就多个Exchange(也可能是一个)、多个Queue的消息队列。那多个Exchange、多个Queue之间是怎么进行数据传输的呢,下边重点讲解。

RabbitMQ几个概念

1、Routing Key(路由Key):生产者发送消息是会附带一个Routing Key用于“分发器”根据这个Routing Key选择到底是哪个Queue接收这个消息

2、Binding Key(绑定Key):Queue和分发器之间的桥梁、Routing Key选择合适的桥梁到达对应的Queue。

3、prefetch count(预取计数):用于指定消费者从Queue中每一次预取得消息、执行完城后才能接着去取。

        Exchange到底是用什么规则决定哪个Queue接收消息的呢,这里就要讲到Exchange Type。Exchange Type说到底就是Routing Key 和 Binding Key的匹配规则。

Exchange Type的4种规则

1、fanout(广播式):无论Routing Key是什么,所有Queue都会收到消息
fanout(广播式)
2、direct(直接式):Binding Key和Routing Key相同才能收到消息
direct(直接式)
3、topic(主题式):模糊匹配,Binding Key和Routing Key都是被点”.”分个开的多个”单词”,如”story.ses.nse”,使用通配符*(代表单个”单词”),#(代表多个”单词”)进行匹配
topic(主题式)
4、headers(消息体):暂时忽略、不常用