RabbitMQ 是一个实现了AMQP(高级消息队列协议)的消息队列,最初起源于金融系统,主要用来实现应用程序间的异步和解耦,可用于在分布式系统中做消息的存储转发
相比于传统的队列服务概念(消息发送者、队列、消息接收者),RabbitMQ在发送者和队列之前增加了一个抽象层——交换器。消息发送者发消息给交换器,交换器根据调度策略把消息发送给队列(交换器和队列之间有绑定关系),这样发消息者和队列就没有直接关系,实现了二者之间的解耦
注:此图来源于网上
交换机和队列之间的调度策略有如下四种:
1)Direct Exchange:交换机默认的一种模式,是通过key全文匹配找到合适的队列然后把消息投送
2)Topic Exchange:通过通配符匹配
3)Headers Exchange:通过自定义的匹配规则匹配,即当消息的header属性中包含的键值对和exchange自定义的匹配时进行消息投送
4)Fanout Exchange:消息广播模式,此时配置的路由key会被忽略
注:Exchange本身不会进行消息存储,如果没有找到合适的队列,消息丢失