Exchange:接收消息,并根据路由键转发消息所绑定的队列。注意交换机并非一个单独运行的进程,而是一个有着“地址”的列表而已。
蓝区 - Send Message:把消息投递到交换机,由 RoutingKey
路由到指定队列。
1 交换机属性
声明交换机时可以附带许多属性:
- Name
交换机名称 - Type
交换机类型,direct、topic、 fanout、 headers - Durability,是否需要持久化。
如果持久化,则RabbitMQ重启后,交换机还存在 - Auto-delete
当最后一个绑定到Exchange 上的队列删除后,自动删除该Exchange - Internal
当前Exchange是否于RabbitMQ内部使用,默认为False
2 交换机类型
交换机主要包括如下4种类型:
- Direct exchange(直连交换机)
- Fanout exchange(扇型交换机)
- Topic exchange(主题交换机)
- Headers exchange(头交换机)
另外RabbitMQ默认定义一些交换机:
- 默认交换机
amq.* exchanges
还有一类特殊的交换机:
- Dead Letter Exchange(死信交换机)
2.1 Direct Exchange
所有发送到DE的消息被转发到RouteKey中指定的Queue
Direct模式可使用RabbitMQ自带的Exchange: default Exchange,所以不需要将Exchange进行任何绑定(binding),消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃。
2.2 Direct Exchange原理示意图
2.3 Direct Exchange实操演示
- Pro
- Con
- 注意路由key保持一致!分别启动