RabbitMQ 实战(四)RabbitMQ 中的交换器

| 阅读:444 发表时间:2018-07-11 23:31:28 服务端

篇文章主要讲 RabbitMQ 中的交换器。

我们不是把消息直接发送到队列里面的,而是先发送到了交换器,交换器再根据路由键把我们的消息投递到对应的队列。

交换器的类型

每种交换器定义了不同的路由算法来把消息投递到对应的队列。

RabbitMQ 中交换器主要分为四种类型:direct、fanout、topic 以及 headers,headers 用的比较少,就不讲了。

direct

路由键全文匹配

当你发送一条消息到 direct 交换器时,它会根据路由键全文匹配去寻找绑定到此交换器上的匹配成功的队列,然后投递消息。

2018-02-05-15178362325041.jpg

如上图,生产者使用路由键 “fruit.apple” 发送消息到 direct 交换器,交换器会根据绑定信息,全文匹配路由键,所以只有 apple 队列符合。

fanout

忽略路由键

当你发送一条消息到 fanout 交换器时,它会把消息投递给所有绑定到此交换器上的队列,而且会忽略路由键。

2018-02-05-15178362764464.jpg

如上图,生产者使用路由键 “fruit.apple” 发送消息到 fanout 交换器,但是交换器会忽略路由键,所以 apple 队列、banana 队列、orange 队列都符合。

topic

路由键通配符匹配

当你发送一条消息到 topic 交换器时,它会根据路由键通配符匹配去寻找绑定到此交换器上的匹配成功的队列,然后投递消息。

3jpg.jpg

如上图,生产者使用路由键 “fruit.apple” 发送消息到 topic 交换器,交换器会根据绑定信息,通配符匹配路由键,所以 apple 队列、banana 队列、orange 队列都符合。