作为金融级必选的消息中间件,RabbitMQ 凭借其高可靠、易扩展、高可用及丰富的功能等特性受到越来越多企业的青睐,本篇文章简单介绍一下在初次学习RabbitMQ时涉及的一些基础的概念以及名词的解释
首先看一下RabbitMQ的消息流转图:
简单解释一下上方涉及的几个组件
Producer生产者
消息发送方,生产者创建消息,然后发布到 RabbitMQ 中
消息
一个消息一般是由两部分组成的:消息体和标签
Broker
可以看作 RabbitMQ 服务
交换器Exchange
生产者将消息发送到交换器,由交换器将消息路由到一个或者多个队列中,如果路由不到,或许会返回给生产者,或许直接丢弃
RabbitMQ 常用的交换器类型有 anout、direct、topic、headers
绑定Binding
将交换器与队列的关系就是通过绑定关联起来的,将一个队列绑定到交换机的时候一般会指定一个绑定键BindingKey ,这样当生产者投递到交换机的消息就会根据消息标签中的BindingKey 投递到对应的队列中
路由键RoutingKey
在使用direct和topic这两种交换机的时候生产者想要准确的投递到队列中就必须指定RoutingKey
队列Queue
队列是 RabbitMQ 的内部对象,用 于存储消息,且只存储消息体。因为消息的标签是存储的消息的路由、延迟等信息,所以当交换机把消息投递到队列时这些标签就没有作用了,也就被丢弃了。
与Kafka将消息存储在 topic 中不同的是RabbitMQ 中消息都只能存储在队列中
消费者Conumer
消息接受方。消费者连接到 RabbitMQ 服务器,并订阅到队列上 。
消费者只会消费到消息体不知道消息的生产者是谁,当然也不知道Broker