RabbitMQ day01
相关概念
RabbitMQ是一个生产者和消费者模型,主要负责接收、存储和转发消息。
生产者和消费者
Producer:生产者,就是投递消息的一方;- 生产者创建消息并发布到RabbitMQ,消息通常由消息体和标签组成,消息体保存要发布的实际信息,消息标签用于区分将消息发送给感兴趣的消费者。
Consumer:消费者,就是接收消息的一方;- 消费者需要连接到RabbitMQ服务器,并订阅到队列,消费者消费一条消息只是消费消息体,因为消息保存在队列时会丢弃消息标签,只保存消息体。
Broker:消息中间件的服务节点;- RabbitMQ Broker就是一个RabbitMQ服务节点。生产者将消息包装后发送到Broker中,消费者订阅Broker中的队列,接收生产者发送的消息。
队列
Queue:队列是RabbitMQ中的一个对象,用于存储消息。- 由生产者生产的消息最终会被投递到队列中,消费者可以从队列中获取消息,多个消费者可以订阅同一个队列。
交换器、路由键、绑定
Exchange:交换器,用于对生产者投递的消息进行路由。- 交换器可以将消息路由到一个或者多个队列中,对于不能进行路由的消息,可能会返回给生产者或者直接丢弃。
RoutingKey:路由键,交换器通过路由键确定将消息路由给哪一个队列。- 路由键需要与交换器的类型和绑定建同时使用才会生效。
Binding:绑定。- 通过绑定可以将交换器和队列关联起来,在绑定时都会指定一个绑定建,从而就能知道将消息路由给哪一个队列。
交换器类型
fanout- 把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。
direct- 会把消息发送到
BindingKey与RoutingKey相同的队列中。
- 会把消息发送到
topic- 和
direct类型类似,支持模糊匹配。
- 和
headers- 不通过路由键和匹配建进行路由,通过消息内容的
headers属性进行配置。
- 不通过路由键和匹配建进行路由,通过消息内容的
信道
-
channel- 使用信道的目的是为了对减少网络开销,节省TCP资源。