1.交换机的作用
当生产者发送消息时,不指定交换机直接发送消息到队列,多个消费者之间存在的是竞争关系,一条消息只能被一个消费者接收,Exchanges (交换机) 可以将消息分别转发给多个不同的队列,消费者就可以接收到来自不同队列的同一条消息。
2. 交换机的类型
1)Direct (直连)
当生产者在发送消息时指定了交换机和RoutingKey(路由键)时,交换机只会将消息转发给绑定了此交换机且设定了相同RoutingKey的消息队列。
2) Fanout (扇出)
当生产者在发送消息时指定了交换机时,交换机只会将消息转发给绑定了此交换机的消息队列。
3)Topic (主题)
应用范围最广的交换机类型,消息队列通过消息主题与交换机绑定。一个队列可以通过多个主题与交换机绑定,多个消息队列也可以通过相同消息主题和交换机绑定。并且可以通过通配符(*或者#)进行多个消息主题的适配。
4)Headers 标题
与routingKey无关,匹配机制是匹配消息头中的属性信息。在绑定消息队列与交换机之前声明一个map键值对,通过这个map对象实现消息队列和交换机的绑定。当消息发送到RabbitMQ时会取到该消息的headers与Exchange绑定时指定的键值对进行匹配;如果完全匹配则消息会路由到该队列,否则不会路由到该队列。