下文笔者讲述"RabbitMQ工作模式及应用场景"简介说明,如下所示
RabbitMQ工作模式简介
RabbitMQ工作模式有以下六种 简单模式、工作模式、 发布订阅模式、路由模式、 主题模式、RPC模式
一、简单模式
原理: 一个生产者,一个消费者。 生产者将消息发送到队列, 消费者监听消息队列 如果队列中有消息,就进行消费,消费后消息从队列中删除图片
适用场景
聊天: 有一个oa系统 用户通过接收手机验证码进行注册 页面上点击获取验证码后 将验证码放到消息队列 然后短信服务从队列中获取到验证码 并发送给用户
二、工作模式
原理: 一个生产者,多个消费者,一条消息只能被一个消费者消费 生产者将消息发送到消息队列,多个消费者同时监听一个队列, 谁先抢到消息谁负责消费。 这样就形成了资源竞争 谁的资源空闲大 争抢到的可能性就大
适用场景
电商平台红包 有一个电商平台 有两个订单服务 用户下单的时候 任意一个订单服务消费用户的下单请求生成订单即可 不用两个订单服务同时消费用户的下单请求
三、发布订阅模式
原理: 一个生产者,多个消费者,每个消费者都可以收到相同的消息。 生产者将消息发送到交换机, 交换机类型是fanout, 不同的队列注册到交换机上, 不同的消费者监听不同的队列, 所有消费者都会收到消息
适用场景
邮件群发,群聊天,广播(广告) 商城,我们新添加一个商品后 同时需要去更新缓存和数据库
四、路由模式
原理: 生产者将消息发送给交换机 消息携带具体的routingkey 交换机类型是direct, 交换机匹配与之绑定的队列的routingkey, 分发到不同的队列上
适用场景
一个商城, 新添加了一个商品,实时性不是很高, 只需要添加到数据库即可 无需刷新缓存
五、主题模式
原理: 路由模式的一种 交换机类型是topic 路由功能添加了模糊匹配 星号(*)代表1个单词,#号(#)代表一个或多个单词
适用场景
一个商城,新添加了一个商品, 实时性不是很高, 只需要添加到数据库即可, 数据库包含了主数据库mysql1和从数据库mysql2的内容 无需刷新缓存
六、RPC
1、首先客户端发送一个reply_to和corrention_id的请求, 发布到RPC队列中 2、服务器端处理这个请求, 并把处理结果发布到一个回调Queue, 此Queue的名称应当与reply_to的名称一致 3、客户端从回调Queue中得到先前corrention_id设定的值的处理结果。 如果碰到和先前不一样的corrention_id的值, 将会忽略而不是抛出异常
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。