RabbitMQ的工作模式
HelloWorld
一个生产者将消息发送到队列,一个消费者接收
Work Queues
一个生产者将消息发送到队列,多个消费者接收
多个消费者监听同一个队列,则各消费者之间对同一消息是竞争关系(一个消息仅由一个消费者消费)
Work Queues工作模式适用于任务较重或任务较多的情况,多消费者分摊任务可以提高消息处理的效率
Publish/Subscribe发布订阅模式
生产者将消息发送到交换机,交换机可以绑定多个队列,广播到多个队列上,每个队列依然可以有多个消费者接收,且同一队列上的消费者对同一消息依然是竞争关系(一个队列上的一个消息仅由一个消费者消费)
生产者不是把消息直接发送到队列,而是发送到交换机。交换机接收消息,而如何处理消息取决于交换机的类型
Exchange(交换机)只负责转发消息,不具备存储消息的能力,因 此如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,那 么消息会丢失!
Fanout:广播,将消息发送给所有绑定到交换机的队列
Direct:定向,把消息交给符合指定routing key的队列
Topic:通配符,把消息交给符合routing pattern(路由模式)的队列
生产者将消息发送到Fanout类型的交换机上,Fanout类型的交换机可以绑定多个队列,Fanout类型的交换机会将消息广播到所有绑定的队列上(交换机上绑定的多个队列都能收到消息,但是每个队列仅由一个消费者处理,因为可能有多个队列,所以实际上可能有多个消费者处理消息)
Routing路由模式
生产者将消息发送到交换机,交换机通过确定的路由绑定队列,将消息发送到指定的队列上
发送消息时指定路由键,由交换器根据路由键发送到绑定的队列上
路由模式是发布订阅模式的进一步细化,发布订阅模式绑定队列到交换机上,路由模式则对绑定到交换机上队列根据路由键进一步分组
使用路由模式需要指定交换机类型为Direct
Topics主题模式
生产者将消息发送到交换机,使用通配符匹配一个或多个路由
主题模式是在路由模式的基础上,使用通配符指定路由键
路由键一般都是由一个或多个单词组成,多个单词之间以“.”分割
通配符#
匹配零个或多个词
通配符*
匹配一个词
使用主题模式需要指定交换机类型为Topic
RPC
是一种同步模式,用得少
PublisherConfirms
消息可靠性投递