1、简单模式
简单模式:一个生产者,一个消费者
一个生产者对应一个消费者 。
2、工作队列模式(work 模式)
一个生产者对应多个消费者,但是一条消息只能有一个消费者获得消息。(消费者彼此竞争成为接收者)
轮询分发就是将消息队列中的消息,依次发送给所有消费者。一个消息只能被一个消费者获取。
3、发布/订阅模式
一个消费者将消息首先发送到交换器,交换器绑定到多个队列,然后被监听该队列的消费者所接收并消费。两个消费者获得了同一条消息:一个消息从交换机同时发送给了两个队列中,监听这两个队列的消费者消费了这个消息;如果没有队列绑定交换机,则消息将丢失。因为交换机没有存储能力,消息只能存储在队列中。
4、路由模式
生产者将消息发送到direct交换器,在绑定队列和交换器的时候有一个路由key,生产者发送的消息会指定一个路由key,那么消息只会发送到相应key相同的队列,接着监听该队列的消费者消费消息。路由模式,是以路由规则为导向,引导消息存入符合规则的队列中。再由队列的消费者进行消费的。
5、主题模式
与路由模式相似,但是,主题模式是一种模糊的匹配方式。交换机为topic模式,路由key可选 *(匹配明确的一个单词) 或 #(匹配0到多个单词)
6、4种交换机
1、direct 如果路由键完全匹配的话,消息才会被投放到相应的队列。
2、fanout 当发送一条消息到fanout交换器上时,它会把消息投放到所有附加在此交换器上的队列。
3、topic 设置模糊的绑定方式,“*”操作符将“.”视为分隔符,匹配单个字符;“#”操作符没有分块的概念,它将任意“.”均视为关键字的匹配部分,能够匹配多个字符。
4、headers 交换器允许匹配 AMQP 消息的 header 而非路由键,除此之外,header 交换器和 direct 交换器完全一致,但是性能却差很多,因此基本上不会用到该交换器
小结:
五种工作模式,可以归为三类:
- 生产者,消息队列,一个消费者;
- 生产者,消息队列,多个消费者;
- 生产者,交换机,多个消息队列,多个消费者;