RabbitMQ(二)Exchange
1 RabbitMQ的运行机制
- AMQP中消息的路由过程和JMS存在一些差别,AMQP中增加了
Exchange
和Binding
的角色 - 生产者把消息发布到
Exchange
上,消息最终到达队列而被消费者接受,而Binding
决定交换器的消息应该被发送到哪个队列
Exchange分发消息的时候根据类型的不同分发策略也会有所区别,目前共有四种类型:direct
、fanout
、topic
、headers
。headers匹配AMQP消息的header而不是路由键,headers和direct交换器完全一致,但是性能差很多,目前基本用不到了,所以直接看其他的三种:
2 Direct Exchange
- 消息中的
路由键
和Binding
中的Binding Key
完全匹配,直接交换机才会将该消息发送到该与交换机绑定的队列上
3 Fanout Exchange
- 每个发送到
Fanout Exchange
的消息都会分到所有绑定的队列上 Fanout Exchange
不处理路由键,只是简单地将队列绑定到交换器上,每个发送到交换机的消息都会被转发到与该交换机绑定的队列中- 很像子网广播,每台子网内的主机都获得了一份复制的消息
- Fanout类型转发消息是最快的
4 Topic Exchange
- topic交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上
- 将路由键和绑定键的字符切分成单词,这些单词之间用点隔开
- 符号#:匹配0个或者多个单词
- 符号*:匹配一个单词