RabbitMQ学习--基础总结

为什么使用消息中间件

  • 中间件:是提供软件和软件之间连接的软件,以便于软件各部件之间的沟通;

异步直接调用的问题

  • 业务调用链过长,用户等待时间长
  • 部分组件故障会瘫痪整个业务
  • 业务高峰期没有缓冲
  • 业务高峰期时产生大量的异步线程,造成线程池不够用或者内存饱满;!!!
    在这里插入图片描述
    在这里插入图片描述

使用消息中间件的优势

  • 业务调用链短,用户等待时间短;
  • 部分组件故障不会瘫痪整个业务;
  • 业务高峰期有缓冲;
  • 业务高峰期不会产生大量的异步线程;

使用消息中间件的作用

  • 异步处理;
  • 系统解耦;
  • 流量削峰和流控;
  • 消息广播;
  • 消息收集;
  • 最终一致性;

中间件介绍

  • ActiveMQ
  • RabbitMQ
    • 高可靠性,支持发送确认、投递确认等特性;
    • 高可用,支持镜像队列;
    • 支持插件;
  • RocketMQ
  • Kafka

RabbitMQ高性能的原因

  • RabbitMQ底层使用ErLang实现,天生具有高性能的基因;

AMQP协议介绍

在这里插入图片描述

  • Broker: 接收和分发消息的应用,RabbitMQ就是Message Broker;
  • Virtual Host: 虚拟Broker,将多个单元隔离开;
  • Connection: publisher/consumer 和broker之间的TCP连接;
  • Channel:connection内部建立的逻辑连接,通常每个线程创建单独的channel;
  • Routing Key: 路由键,用来指示消息的路由转发,相当于快递的地址;
  • Exchange: 交换机,相当于快递的分拨中心;
  • Queue: 消息队列,消息最终被送到这里等待consumer取走;
  • Binding: exchange和queue之间的虚拟连接,用于message的分发依据;

核心概念–Exchange

  • 在AMQP协议或者是在RabbitMQ实现中,最核心的组件是Exchange;
  • Exchange承担RabbitMQ的核心功能——路由转发;
  • Exchange有多个种类,配置多变,需要详细学习;
  • Exchange的功能是根据绑定关系路由键为消息提供路由,将消息转发至相应的队列;
  • Exchange有4中类型:Ditrect、Topic、Fanout、Headers,其中Headers使用很少,以前三种为主;
Direct Exchange

Message中的Routing Key如果和Binding Key一致,Direct Exchange则将message发到对应的queue中;
在这里插入图片描述

Fanout Exchange

每个发到Fanout Exchange的 message都会分发到所有绑定的queue上去;
在这里插入图片描述

Topic Exchange
  • 根据Routing Key及通配规则,Topic Exchange将消息分发到目标Queue中;
    • 全匹配:与Direct类似;
    • Binding Key中的#: 匹配任意个数的word;
    • Binding Key中的*: 匹配任意1个word;
      在这里插入图片描述
总结
  • AMQP协议直接决定了RabbitMQ的内部结构和外部行为;
  • 对于发送者来说,将消息发给特定的Exchange;
  • 消息经过Exchange路由之后,到达具体的队列;
  • 消费者将消息从监听的队列中取走;
  • Exchange主要有三种类型:Direct/Topic/Fanout;
    • Direct(直接路由)
    • Fanout(广播路由)
    • Topic(话题路由)

RabbitMQ安装

直接docker命令安装

docker run -d -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

网页端管理工具介绍

  • RabbitMQ网页端管理工具也叫管理控制台、管控台;
  • 管理控制台是RabbitMQ最常用的管理、配置工具;
  • 管理控制台对于业务的开发、调试也非常有用;
启用前端插件
  • docker命令进入容器内部

docker exec -it rabbitmq bash

  • 启动应用:

rabbitmq-plugins enable rabbitmq_web_stomp

  • 浏览器打开:

127.0.0.1:15672

  • 默认用户名:guest,密码:guest;
    在这里插入图片描述

命令行工具上手

  • 生产环境、端口限制等不变打开网页端工具;
  • 使用脚本自动化配置Rabbitmq;
口诀
  • 想看什么就list什么;
  • 想清空什么就purge什么;
  • 想删除什么就Delete什么;
  • 一切问题使用 --help

状态查看

  • 查看状态:

rabbitmqctl status

  • 查看绑定

rabbitmqctl list_bindings

  • 查看channel

rabbitmq list_channels

  • 查看connection

rabbitmq list_connections

  • 查看消费者

rabbitmqctl list_consumers

  • 查看交换机

rabbitmqctl list_exchanges

队列相关

  • 查看队列

rabbitmqctl list_queues

  • 删除队列

rabbitmqctl delete_queue XXX

  • 情况队列

rabbitmqctl purge_queue

用户相关

在这里插入图片描述

应用启停

  • 启动应用: rabbitmqctl start_app;
  • 关闭应用:rabbitmqctl stop_app,保留Erlang虚拟机;
  • 关闭应用: rabbitmqctl stop,并关闭虚拟机;

集群相关

  • 加入集群: rabbitmqctl join_cluster
  • 离开集群:rabbitmqctl reset

镜像队列

  • 设置镜像队列:rabbitmqctl sync_queue
  • 取消镜像队列:rabbitmqctl cancel_sync_queue
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值