RabbitMQ简介
安装以及常用命令
RabbitMQ的工作模式
Spring整合RABBitMQ
SpringBoot整合RabbitMQ
1.MQ是什么?
这就是生产者和消费者不直接连通了(这样的话不会因为某一方出问题而导致两方都瘫痪),通过一个中转站,比如生产者生产了100个库存商品,直接放入中转站了,消费者需要了可以直接在中转站取,两边谁出异常都不影响其他人。这就是解耦,解决了两方的耦合
以注册用户为例,传统的注册用户:
1.insert into
2.从邮箱发送邮件
3.发短信到手机验证
调用短信、邮箱的时候会有网络延迟 2 3秒大概,这个时候如果程序要等2 3秒这个时间等你短信回来了才继续往下走,这样系统就卡在这了。等这部完成了程序才会接着往下走,才给客户端相应信息,这相当于一个串行。
引入了消息队列:
1,添加到数据库
2,把发短信,发邮件的步骤丢到消息队列里
3,生产者把这些步骤往消息队列里一丢就可以接着干别的事了,不管你消费者什么时候收到短信什么时候验证都不影响生产者干其他的事。
4,消费者线程监听这个消息队列,有短信就可以验证了,这就是并行。两方不会互相影响对方。
用户秒杀的时候会有用户确权,这个系统可能处理高并发的性能比较强,用户确权的速度非常快(使用了各种集群各种reddis技术等),
qps(Query Per Second,每秒查询率,衡量标准:规定时间内所处理数据流量多少)达到了每秒1000,用户秒杀后下单,订单和支付交互,但是支付这个功能处理就比较慢了 ,每秒QPS只有200.很显然会造成系统塞车。很多秒杀信息请求都过来了但是支付流程来不及处理,一直等待。
现在就干脆把用户的信息,商品信息等丢到消息队列里面去,同时也告诉支付流程 这边已经处理好了,订单系统可以慢慢处理。在消息队列里满满消费就行了。
RabbitMq简介
1.以高性能 健壮已经可伸缩出名的Erlang语言编写
2.支持多种客户端语言
3.有易用的用户界面。
RabbitMQ相关概念:
生产者(Producer)生产的消息 就存在RabbitMQ的队列(Queue)当中,队列(Queue)就是存放消息的容器。
RabbitMQ可以理解成存储消息的容器,它里面有队列,有交换机等等。(例如tomcat里面不止有servlet容器,里面还有连接池等)
和数据库类似,之前操作数据都是存在了 一张对应的表里, 这个表就相当于RabbitMQ的队列,数据都存在这里面。
这个表又属于某一个数据库,这样方便管理(A数据库里面5张表 B数据库里面10张表),
这个数据库在RabbitMQ里面就相当于 虚拟主机(Vhost)。队列相当于数据库里面的表。
安装与使用
Windows下安装与使用
在sbin这个路径下运行这句话
同样的 这里也可以启动或者关闭
登陆Rabbit
windows下。
这样就可以在这个页面操作了
Linux下的安装和使用
创建目录
rz。 选择两个压缩包(在rabblitMQ目录下linux文件夹内