RabbitMQ的运行过程:
五种工作模式:
1.简单模式:
生产方将消息发送给默认的交换机,交换机获取消息后交给绑定这个生产者的队列,队列再将消息发送给监听当前队列的消费方。
应用场景:短信和聊天,用户通过接收手机验证码进行注册,页面上点击获取验证码后,将验证码放到消息队列,然后短信服务从队列中获取到验证码,并发送给用户。
2.工作模式:
生产方将消息发给交换机,交换机交给绑定的队列,队列由多个消费者监听,一个消费者接受一条消息,形成资源争抢,谁的资源空闲大,争抢到的可能越大。
应用场景:抢红包和分布式的任务派发。
3.发布订阅( Publish/subscribe):
生产者发送消息给交换机,交换机根据自身的类型(fanout)将会把消息转发到绑定此交换机的每个队列, 每个队列可以有一个消费者,接收消息进行消费逻辑。
应用场景:邮件群发和广告。有一个商城,我们新添加一个商品后,可能同时需要去更新缓存和数据库。
4.路由模式:
生产者将消息发送给交换机,消息携带routingkey。交换机类型是direct,将消息中的routingkey比对与之绑定的队列的routingkey,分发到不同的队列上。
应用场景:商城里新添加了一个实时性不高的商品,只需要添加到数据库,不用刷新缓存。
5.主题订阅模式:
路由模式的一种,路由功能添加了模糊匹配。队列绑定交换机不在使用具体的routingkey而是一个范围值,星号(*)代表1个单词,#号(#)代表零个或多个单词。
应用场景:有一个商城,新添加了一个商品,实时性不是很高,只需要添加到数据库即可,数据库包含了主数据库mysql1和从数据库mysql2的内容,不用刷新缓存。