2021-04-12-初识消息中间件RabbitMQ

消息中间件RabbitMQ

RabbitMQ简介

  • 什么是MQ及RabbitMQ
    MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ收费产品有IBM WEBSPHERE MQ等等。

    免费的产品有:ActiveMQ符合JMS(Java Message Server),RabbitMQ(实现AMQP协议,高级消息队列协议),Kafka(大数据应用领域的消息队列),阿里开源的RocketMQ

    RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

    AMQP,即Advanced Message Queuing Protocol(高级消息队列协议),一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

    RabbitMQ采用Erlang实现。

  • 原理

在这里插入图片描述
在这里插入图片描述
1、消息提供者会创建一个交换机和若干个消息队列
2、然后会通过convertAndSend方法把消息(数据可以是某个对象啥的)传递到交换机的,交换机再传递到消息队列
3、这些消息队列和交换机会通过配置的ip地址和端口传递到rabbitMQ这个中间件的数据区
4、消息消费者也会创建交换机和它想要消费的那个消息队列,再利用一个监听器的注解@RabbitListener来监听并获取rabbitMQ数据区中的消息队列的消息
5、消息消费者得到这个消息(有可能是某个对象)就可以做其他事情了

  • 应用场景
    1.异步处理:消息发送的时间取决于业务执行的最长的时间
    2.应用解耦:即使下单时库存系统不能正常使用,也不影响正常下单。因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦
    3.流量消峰:服务器接收用户的请求后,先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面
    秒杀业务中根据消息队列中的请求信息,再做后续处理

RabbitMQ安装

  • 搜索镜像
    在这里插入图片描述
    如果直接拉取rabbitmq默认拉取的是latest版本,是没有一个图形化界面的系统,因为我们学习的过程有图形化界面会好一点,所以要拉取3.7.17-management这个版本
  • 拉取版本
    镜像名称后面冒号跟版本号
    在这里插入图片描述
  • 启动容器
    在这里插入图片描述
    docker run -d --name myrabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:3.7.17-management
     参数说明
     -d:后台运行
     --name:设置名称
     -p:15672后台管理端口映射
     -p:5672 rabbitmq服务端口

验证是否安装成功:http://192.168.189.137:15672/
用户名:guest/guest

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值