在rabbitmq的消息模型中,消息的生产都是面向交换机的,并会指定一个路由键。由交换机根据路由键去匹配绑定在此交换机的队列上。匹配的规则则是根据交换机的类型来决定如何匹配队列绑定交换机时的绑定键。匹配成功,则交换机会把消息发送到相应队列上。
接下来我们介绍下这几种主要的交换机类型。
1. direct 直连交换机
2. fanout 广播交换机
3. topic 主题
4. header 这个不咋用,这里暂时就不介绍了,啊哈哈
1. Direct
路由键完全匹配,消息被投递到对应的队列,键:channel->basic_public($msg,’’,’queue-name’)
direct 交换器是默认交换器。声明一个队列时,会自动绑定到默认交换器,并且以队列名称作为路由
2. Fanout
消息广播到绑定的队列,不管队列绑定了什么路由键,消息经过交换器,每个队列都有一份
3. Topic
通过使用“”和“#”通配符进行处理,使来自不同源头的消息到达同一个队列,”.”将路由键分为了几个标识符,“”匹配 1 个,“#”匹配一个
或多个
路由键 :像交换机发布消息时指定的一个字符串
绑定键 :队列绑定交换机时的一个字符串
路由键 | 绑定键 | 是否可以匹配 |
---|---|---|
apple.# | apple.orange | yes |
apple.# | apple.orange.banana | yes |
apple.* | apple.orange | yes |
apple.* | apple.orange.banana | no |