消息队列
一、作用
1.解耦
代码,或者系统通信都可能存在强耦合的关系,可以通过消息队列第三方技术处理强耦合,解耦 。
1.消峰
请求到达系统的方法上限,超过上限的请求不丢失不拒绝.。
二、rabbitmq的启动和控制台登录
1.服务器启动rabbtimq
#service rabbitmq-server start
start启动
stop停止
restart重启
2.登录控制台
控制台是web应用,可以通过http协议访问
ip:15672
登录名密码:guest/guest
三、rabbitmq五种模式
1.简单模式
当生产端发送消息到交换机,交换机根据消息属性发送到队列,消费者监听绑定队列实现消息的接收和消费逻辑编写.简单模式下,强调的一个队列queue只被一个消费者监听消费.
1.1结构
生产者:生成消息,发送到交换机
交换机:根据消息属性,将消息发送给队列
消费者:监听这个队列,发现消息后,获取消息执行消费逻辑
1.2应用场景
常见的应用场景就是一发,一接的结构
例如:
手机短信,邮件单发
2.争抢模式
强调的也是后端队列与消费者绑定的结构(一对多)
1.1结构
生产者:发送消息到交换机
交换机:根据消息属性将消息发送给队列
消费者:多个消费者,同时绑定监听一个队列,之间形成了争抢消息的效果
1.2应用场景
抢红包
资源分配系统
3.交换机----3种
(1).交换机的运行机制
生产端要发送消息,永远不会将消息发送给队列,而是发送给交换机。
消息本身除了数据以外,携带一个路由key值。
交换机根据自身的类型不同,采用不同的方式处理这些消息(计算路由key方式不同) 。
(2).三种类型
第一种:发布订阅:fanout
生产端:发送消息到交换机
交换机:由于是发布订阅模式,会将这个消息发送同步到后端所有与其绑定的队列
消息端:简单模式 1个队列绑定一个消费者 争抢模式 1个队列绑定多个消费者
应用场景
邮件的群发,广告的群发
第二种:路由模式:direct
生产端:发送的消息携带具体的路由key值
交换机:接收路由key值,判断和当前交换机绑定后端队列哪个满足路由的匹配
将消息发送给这个队列
应用场景
处理一些特殊的消息逻辑,可以经过路由的筛选
第三种:主题模式:topic
交换机绑定队列,不在使用具体的路由key,可以使用符号代替路由key值的规则
#:表示任意多级的任意长度的字符串
*:任意长度字符串,但是只有一级
应用场景
实现多级传递的路由筛选工作,记录trace过程.