Exchange 详解
2019-09-26 本文已影响0人
qyfl
Exchange: 接收消息,并根据路由键转发消息到所绑定的队列。
如下图所示的黄框部分
系统架构.png交换机属性
- Name:交换机名称。
- Type:交换机类型。direct、topic、fanout 等等
- Durability:是否需要持久化。true 为持久化
- Auto Delete:当最后一个绑定到该交换机的队列被删除后,自动删除该交换机。
- Internal:当前交换机是否为 RabbitMQ 内部使用。默认为 false。
- Arguments:扩展参数,用于扩展 AMQP 协议制定化使用。
Direct 类型
所有发送到 Direct 类型的交换机中的数据转发到路由键指定的队列中。
例如:名为 "test_exchange" 的交换机下,名为 "test_route" 路由键绑定了名为 "test_q" 的队列。
那么在生产者在发送的时候,需要将 exchange 指定为 "test_exchange",routing key 指定为 "test_route"。才能将消息发送到 "test_q" 队列中。
Topic 类型
前提:
- 每一个交换机都会通过路由键绑定队列。
- 每一个队列绑定一个路由键。
Topic 类型就是队列绑定的路由键是模糊匹配的。
#
匹配一个或多个词
*
匹配一个词
示例:
- 队列 A 绑定的路由键是
usa.#
。队列 B 绑定的路由键是#.weather
。 - 那么生产者在发送的时候指定路由键为
usa.abc.efg
,那么将会发送到 A 队列里。 - 如果路由键为
abc.efg.weather
那么会发送到 B 队列里。
Fanout 类型
- 这种类型的交换机不处理路由键,只是需要简单的将队列绑定到交换机上。
- 发送到交换机的消息都会被转发到与该交换机所绑定的队列上
- 在所有交换机中转发消息最快