RabbitMq
一 MQ的相关概念
1.什么是MQ
本质是个队列,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。
2.为什么要用MQ
1、异步处理
在注册服务的时候,如果同步串行化的方式处理,让存储数据、邮件通知等挨着完成,延迟较大
采用消息队列,可以将邮件服务分离开来,将邮件任务之间放入消息队列中,之间返回,减少了延迟,提高了用户体验
2、应用解耦
电商里面,在订单与库存系统的中间添加一个消息队列服务器,在用户下单后,订单系统将数据先进行持久化处理
然后将消息写入消息队列,直接返回订单创建成功,然后库存系统使用拉/推的方式,获取订单信息再进行库存操作
3、流量削锋
秒杀活动中,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列
服务器在接收到用户请求后,首先写入消息队列,这时如果消息队列中消息数量超过最大数量,则直接拒绝用户请求或返回跳转到错误页面
秒杀业务根据秒杀规则读取消息队列中的请求信息,进行后续处理
RabbitMQ是一个消息中间件:它接受并转发消息。RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点, RabbitMQ与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。
3. 四大核心概念
① 生产者
产生数据发送消息的程序是生产者
②交换机
交换机是RabbitMQ非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定
③队列
队列是RabbitMQ内部使用的一种数据结构, 但它们只能存储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲。
④消费者
消费者大多时候是一个等待接收消息的程序。请注意生产者,消费者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。
4.RabbitMQ核心部分
5. 安装
第一步 文件上传
第二步 安装文件(分别按照以下顺序安装)
rpm -ivh erlang-21.3-1.el7.x86_64.rpm
yum install socat -y
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
常用命令
#添加开机启动RabbitMQ服务
chkconfig rabbitmq-server on
#启动服务
/sbin/service rabbitmq-server start
#查看服务状态
/sbin/service rabbitmq-server status
停止服务(选择执行)
/sbin/service rabbitmq-server stop
#开启web管理插件
rabbitmq-plugins enable rabbitmq_management
#用默认账号密码(guest)访问地址http://1