RabbitMQ(二)Exchange

发布时间 2023-07-22 22:20:31作者: Tod4

RabbitMQ(二)Exchange


1 RabbitMQ的运行机制

  • AMQP中消息的路由过程和JMS存在一些差别,AMQP中增加了ExchangeBinding的角色
  • 生产者把消息发布到Exchange上,消息最终到达队列而被消费者接受,而Binding决定交换器的消息应该被发送到哪个队列

​ Exchange分发消息的时候根据类型的不同分发策略也会有所区别,目前共有四种类型:directfanouttopicheaders。headers匹配AMQP消息的header而不是路由键,headers和direct交换器完全一致,但是性能差很多,目前基本用不到了,所以直接看其他的三种:

2 Direct Exchange

  • 消息中的路由键Binding中的Binding Key完全匹配,直接交换机才会将该消息发送到该与交换机绑定的队列上

image-20230710204204929

3 Fanout Exchange

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

image-20230716155330951

4 Topic Exchange

  • topic交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上
  • 将路由键和绑定键的字符切分成单词,这些单词之间用点隔开
    • 符号#:匹配0个或者多个单词
    • 符号*:匹配一个单词
image-20230716155722114 image-20230716155643631