一、发布订阅模型
发布( Publish )、订阅( Subscribe )
发布订阅模式与之前案例的区别就是允许将同一消息发送给多个消费者。实现方式是加入了exchange(交换机)。
二、各角色作用
1.
Publisher
:生产者,也就是要发送消息的程序,但是不再发送到队列中,而是发给交换机
2.Exchange
:交换机。一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。到底如何操作,取决于Exchange的类型。
3.Consumer
:消费者,与以前一样,订阅队列,没有变化
4.Queue
:消息队列也与以前一样,接收消息、缓存消息。
三、交换机类型
常见exchange类型包括:
1. Fanout:广播,将消息交给所有绑定到交换机的队列
2. Direct:路由,把消息交给符合指定routing key 的队列
3. Topic:通配符,把消息交给符合routing pattern(路由模式) 的队列
注意:exchange负责消息路由,而不是存储,路由失败则消息丢失(如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,那么消息会丢失!)