RabbitMQ(二)交换器类型
RabbitMQ共有四种交换机类型,分别是Direct、Fanout、Topic、Headers。
声明Exchange的属性
/**
* name:交换器名称
* type:交换器类型
* durable:是否持久化,true表明此exchange是持久化的。
* autoDelete:删除标志,没有队列与此exchange绑定时,是否删除。
* internal:true表示当前Exchange是RabbitMQ内部使用,用户所创建的Queue不会消费该类型交换机下的消息,
* 既然是为了RabbitMQ系统所用,作为用户,我们就没有必要创建该类型的Exchange,当然默认也是选择No.
* arguments:交换器参数
*/
Exchange.DeclareOk exchangeDeclare(String exchange,
BuiltinExchangeType type,
boolean durable,
boolean autoDelete,
boolean internal,
Map<String, Object> arguments) throws IOException;
1、Direct
处理路由键,消息到达该交换器后,将处理路由键,判断消息的路由键是否与绑定的队列的路由键完全匹配,如果匹配,那么将放入到队列中。

2、Fanout
不处理路由键,即可以不设置,消息到达此交换器后,会被广播到与该交换机绑定的所有队列上。

3、Topic
处理路由键,Topic Exchange 和 Direct Exchange 类似,也需要通过 RoutingKey 来路由消息,区别在于Direct Exchange 对 RoutingKey 是精确匹配,而 Topic Exchange 支持模糊匹配。分别支持和#通配符,表示匹配一个单词,#则表示匹配没有或者多个单词。
根据下图的匹配,发送routingkey = "topic.q"的消息后,将会到三个队列中。

4、Headers
不处理路由键,Headers Exchange 会忽略 RoutingKey 而根据消息中的 Headers 和创建绑定关系时指定的 Arguments 来匹配决定路由到哪些 Queue。
Headers Exchange 的性能比较差,而且 Direct Exchange 完全可以代替它,所以不建议使用。

浙公网安备 33010602011771号