1.整体图示
由上图可以知道交换机的类型有:扇形、直连、主题和头交换机。 扇形交换机:广播 直连交换机:精确匹配 主题交换机:模糊匹配
2.主题交换机和头交换机的区别主题交换机的路由是基于路由键,只有是字符串,匹配是设置*和# 头交换机的路由值基于消息的header数据,可以是整型和哈希值,匹配值是x-match 消息header数据里有一个特殊值”x-match”,它有两个值: all: 默认值。一个传送消息的header里的键值对和交换机的header键值对全部匹配,才可以路由到对应交换机 any: 一个传送消息的header里的键值对和交换机的header键值对任意一个匹配,就可以路由到对应交换机
3.头交换机实例//生产者发送时,增加了头部的属性
Map headers = new HashMap();
headers.put("format","pdf");
headers.put("type","report");
AMQP.BasicProperties props = new AMQP.BasicProperties
.Builder()
.headers(headers)
.build();
String msg = "交换机消息发布了";
channel.basicPublish(EXCHANGE_NAME, "", props, msg.getBytes());
//接受者在绑定交换机的时候,也增加了头部的属性
Map headers = new HashMap();
headers.put("format", "pdf");
headers.put("type", "report");
headers.put("x-match", "all");
channel.queueBind(queueName, EXCHANGE_NAME, "", myHeaders);