0%

Rabbitmq名称解释

名词解释

1、基础模块

要熟练使用Rabbitmq就必须知道其名词含义和工作机制

基本流程

基本的工作流程是这样的:生产者,就是你的发送程序,通过TCP连接,创建channel(通道)向指定的exchange(交换机)发送一个消息,exchange再将消息下发到binding(绑定)的queue(队列)中,然后消费者(处理程序)监听接收queue中的消息进行处理。

这是google的一张流程图

img

生产者,消费者

即发送消息和接收处理消息的逻辑程序

Channel

通道,rabbitmq的本质是tcp通信,利用tcp连接创建内部的逻辑连接,注意,此通道不是tcp本身通道(tcp一个连接就是一个通道),而是共享一个tcp连接的其内部实现的连接,至于rabbitmq内部如何实现的我也没吃透,应该是用到了多路复用,总之rabbitmq一切收发都是通过channel实现的,避免了重复连接tcp产生的资源消耗。

Exchange

交换机,相当于是一个消息中转控制中心,负责接收消息然后根据路由规则将消息下发到指定的queue。

Queue

队列,即存放消息的地方,消费的时候直接从队列里取。

2、参数说明

Routing Key

路由键,是exchange跟queue之间的桥梁,exchange根据绑定的routing key下发消息到对应的queue中,决定了消息的流向,键名可以自定义。

Type

exchange的类型,有’fanout’、’direct’、’topic’、’headers’四个类型。

  • fanout:不需要指定路由键,直接将消息发送给exchange中的所有queue,类似于广播。
  • direct:将消息发给exchange中指定路由键的queue中,相当于精准投放。
  • topic:匹配模式,消息下发到匹配规则的routing key的queue中,有’‘与’#’两个通配符,’‘表示只匹配一个词,’#’表示匹配多个,比如’user.*‘只能匹配到’user.name’而不能匹配到’user.name.wang’,’user.#’则都可以匹配到。
  • headers:根据消息体的headers匹配,这种用到的比较少,绑定的时候指定相关header参数即可。

Durable

exchange跟queue都有这个参数,类型为boolean,表示是否持久化。

Auto delete

exchange跟queue都有这个参数,类型为boolean,我试了一下,当exchange绑定的queue全都解绑的时候exchange会自动删除,queue好像没什么影响。

Internal

exchange有这个参数,类型为boolean,内部的,意味着不能对这个exchange发送消息,通过管理后台还是可以发送消息的。

noWait

几乎每个步骤都有这个参数,类型为boolean,不需要服务器任何返回值的意思,指服务端创建队列发送消息等,rabbitmq不需要这个返回状态即可进行下一步,正常来说不会用到这个参数,容易报异常。

Exclusive

queue有这个参数,类型为boolean,排他队列,只对创建该队列的用户可见,其它用户无法访问。

延伸扩展

rabbitmq还提供了很多扩展参数,比如’x-message-ttl’给消息设置过时时间,’x-max-length-bytes’设置消息最大长度,’x-dead-letter-exchange’设置消息过时后推送到的exchange等等,具体的官方文档也提供了,也可以看管理后台创建exchange、queue的时候会有提示的额外参数。

img

引用这里:https://shuangdeyu.gitee.io/2019/04/16/%E5%9F%BA%E4%BA%8EGo%E7%9A%84Rabbitmq%E5%AE%9E%E8%B7%B5/