RabbitMQ 消息流转过程

Exchange理解为交换机,交换机有多种款式,根据功能的不同,分为direct,topic,fanout,header

direct

直连交换机,交换机根据生产者指定的key,直接投递到跟key完全匹配的队列

topic

主题交换机,直连交换机的升级版,可以通过*号或#号模糊匹配队列

如下图所示,队列绑定到交换机时指定的routingKey是带有*号或者#号的,表示接收类似的routingKey

如果有两条队列匹配上,两条队列都会收到

例如,下面的三条队列,分别为A->agreements.eu.berlin.#,B->agreements.# ,C->agreements.eu.*.headstore

假如生产者指定的routingKey为agreements.eu.berlin,那么会匹配上A和B

fanout

扇形交换机,想象wifi信号的图标,它是一个广播交换机,广播到所有连到交换机的队列,不用生产者指定routingKey,即使指定,人家也会忽略掉

header

头部交换机,header,web请求时传递参数的一个地方,这里也是类似,它是根据header中的参数来匹配对应的队列

约定:header["x-match"],这是一个特殊的header,取值all或any,all指全部都匹配才匹配,any指只要有一个参数匹配则匹配