Rabbitmq之exchange
Exchange有多种类型,最常用的是Direct/Fanout/Topic三种类型。
1.Direct exchange
完全根据key进行投递的叫做Direct交换机,例如,绑定时设置了routing key为”abc”,那么客户端提交的消息,只有设置了key为”abc”的才会投递到队列。
Message中的“routing key”如果和Binding中的“binding key”一致, Direct exchange则将message发到对应的queue中。
2.Fanout exchange
Fanout交换机,它采取广播模式,一个消息进来时,投递到与该交换机绑定的所有队列。
每个发到Fanout类型Exchange的message都会分到所有绑定的queue上去。
3.Topic exchange
对key进行模式匹配后进行投递的叫做Topic交换机,符号”#”匹配一个或多个词,符号”*”匹配正好一个词。例如”abc.#”匹配”abc.def.ghi”,”abc.*”只匹配”abc.def”。
4.Headers exchange
headers类型的Exchange不依赖于routing key与binding key的匹配规则来路由消息,而是根据发送的消息内容中的headers属性进行匹配。
在绑定Queue与Exchange时指定一组键值对;当消息发送到Exchange时,RabbitMQ会取到该消息的headers(也是一个键值对的形式),对比其中的键值对是否完全匹配Queue与Exchange绑定时指定的键值对;如果完全匹配则消息会路由到该Queue,否则不会路由到该Queue。当“x匹配”参数被设置为“any”时,只有一个匹配的标题值就足够了。或者,将“x匹配”设置为“all”命令所有的值都必须匹配;