热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RabbitMQ的多种Exchange类型

RabbitMQ的多种Exchange类型Exchange分发消息时,根据类型的不同分发策略有区别。目前共四种类型:direct、fanout、topic、headers(head

RabbitMQ的多种Exchange类型

Exchange分发消息时,根据类型的不同分发策略有区别。目前共四种类型:direct、fanout、topic、headers(headers匹配AMQP消息的header而不是路由键(Routing-key),此外headers交换器和direct交换器完全一致,但是性能差了很多,目前几乎用不到了。所以直接看另外三种类型)。

direct(直接交换模式)

RabbitMQ的多种Exchange类型

消息中的路由键(routing key)如果和Binding中的binding key一致,交换器就将消息发到对应的队列中。路由键与队列名完全匹配。

注:

direct处理路由键

fanout(分发模式)

RabbitMQ的多种Exchange类型

每个发到fanout类型交换器的消息都会分到所有绑定的队列上去。fanout交换器不处理该路由键,只是简单的将队列绑定到交换器上,每个发送到交换器的消息都会被转发到与该交换器绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。fanout类型转发消息是最快的。

注:fanout不处理路由键

topic(主题模式)

RabbitMQ的多种Exchange类型

topic交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上。它将路由键(routing-key)和绑定键(bingding-key)的字符串切分成单词,这些单词之间用点隔开。它同样也会识别两个通配符:"#"和""。#匹配0个或多个单词,'*'只匹配一个单词。

例如:user.example1.example2

user.# --> 匹配结果为true,可匹配多个单词。

user.* --> 匹配结果为false,只匹配user.example1,因为只匹配一个单词。


推荐阅读
author-avatar
峰的紫色摩天轮
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有