RabbitMQ工作模式
1.基本模型
2.RabbitMQ应用场景
MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。
开发中消息队列通常有如下应用场景:
1、任务异步处理。
将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。
2、应用程序解耦合
MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解耦合。
消息中间件的作用:
应用解耦
弹性伸缩
冗余存储
流量削峰
异步通信
数据同步
3.RabbitMQ五种基本模式
1.简单模式
一个生产者,一个消费者。生产者将消息放入队列。消费者监听队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列删除。
应用场景: 发送邮件。
2.工作模式
一个生产者,多个消费者,每个消费者获取到的消息唯一。生产者将消息放入队列。多个消费者同时监听同一个队列。谁先拿到消息,谁来负责消费。
应用场景:一个服务多个实例,发布任务,其中一个执行就行。
3.订阅模式
一个生产者发送的消息会被多个消费者获取。生产者将消息交给交换机。交换机根据发布订阅的模式设定将消息同步到所有的绑定队列中。后端的消费者都能拿到消息。
应用场景:1.注册成功后,多个应用执行功能(通知用户,初始化积分等)。 2.广告。
4.路由模式
发送消息到交换机并且要指定路由key ,消费者将队列绑定到交换机时需要指定路由key。生产者发送消息到交换机,同时绑定一个路由Key。交换机根据路由key对下游绑定的队列进行路由key的判断,满足路由key的队列才会接收到消息,消费者消费消息。
应用场景:项目中的error报错。
5.主题订阅模式
将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“*”只匹配一个词。
与routing路由模式使用场景基本一致,进行模糊匹配。