• 【RabbitMQ】——入门&安装


    一、入门

    1. 什么是MQ

    <1> 本质是一个队列,FIFO,先进先出。
    <2> 是一种跨进程的通信机制,用于上下游传递消息。
    <3> “逻辑解耦+物理解耦”的通讯方式。

    2. 为什么要使用MQ

    <1> 流量削峰
    使用消息队列做缓冲,将任务分做延迟处理
    <2> 应用解耦
    <3> 异步处理
    在这里插入图片描述
    在这里插入图片描述

    3. MQ的分类

    <1> ActiveMQ

    优点

    单机吞吐量万级,时效性ms级,可用性高,基于主从架构实现高可用,消息可靠性较低的该路丢失数据。

    缺点

    官方社区对ActiveMQ 5.x 维护较少,高吞吐量场景较少使用

    <2> Kafka

    优点

    性能卓越,单机写入TPS约在百万条/秒。最大优点吞吐量高。时效性ms级。kafka是分布式的,一个消息多个副本,少数机器宕机不会丢失数据。
    Kafkaweb管理界面,Kafka-Manager

    缺点

    Kafka单机超过64个队列/分区,Load会发生明显的cpu飙高现象,队列越多,load越高,发送消息响应时间边长

    <3> RocketMQ

    阿里巴巴开源产品,用java实现,设计时参考Kafa,并做了自己的一些改进,

    优点

    单机吞吐量十万级,可用性非常高,分布式框架,消息可以做到0丢失,MQ功能比较完善,扩展性好,支持10亿级别的消息堆积,不会因为堆积导致性能下降

    缺点

    支持的客户端语言不多,目前是java和++。其中c++不成熟

    <4> RabbitMQ

    2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。

    优点

    由于erlang.语言的高并发特性,性能较好;吞吐量到万级,MQ功能比较完备,健壮、稳定、易用、跨平台、支持多种语言如: Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX文档齐全;开源提供的管理界面非常棒,用起来很好用,社区活跃度高;更新频率相当高

    缺点

    商业部需要收费,学习成本较高

    4. 四大核心概念

    在这里插入图片描述
    <1> 生产者
    <2> 队列
    <3> 交换机
    <4> 消费者

    5. 原理名词解释

    在这里插入图片描述

    <1> Broker

    接收和分发消息的应用,RabbitMQ Server 就是Message Broker

    <2> Vrtual host

    出于多租户和安全因素设计的,把AMOP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概念。当多个不同的用户使用同一个RabbitMQ server 提供的服务时,可以划分出多个 vhost,每个用户在自己的vhost创建exchange / queue 等

    <3> Connection

    publisher / consumer 和broker之间的TCP连接

    <4> Channel

    如果每一次访问RabbitMQ都建立一个Connection ,在消息量打的时候建立TCP Connection的开销将是巨大的,效率也较低。Channel是在connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯,AMQP method包含了channel id帮助客户端和message broker识别channel,所以channel之间是完全隔离的。Channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销

    <5>Exchange

    message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到queue 中去。常用的类型有: direct (point-to-point), topic (publish-subscribe) and fanout (multicast)

    <6> Queue

    消息最终被送到这里等待consumer 取走

    <7> Binding

    Exchange和queue之间的虚拟连接,Binding中可以包含routing key ,Binding信息被保存到exchange中的查询表,用于message的分发依据。

    二、安装

    1. 下载RabbitMQ安装包

    官网下载https://www.rabbitmq.com/download.html

    2. 下载 erlang 依赖

    erlang 版本需要和RabbitMQ对应。

    wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/8/erlang-25.0-1.el8.x86_64.rpm/download.rpm
    
    • 1

    3. 安装命令

    rpm -ivh erlang-25.0-1.el8.x86_64.rpm
    yum install socat -y
    rpm -ivh rabbitmq-server-3.10.6-1.el8.noarch.rpm
    
    • 1
    • 2
    • 3

    4. 常用命令

    设置开机启动RabbitMQ服务

    chkconfig rabbitmq-server on
    
    • 1

    启动服务

    /sbin/service rabbitmq-server start
    
    • 1

    查看服务状态

    /sbin/service rabbitmq-server status
    
    • 1

    停止服务

    /sbin/service rabbitmq-server stop
    
    • 1

    5. 安装web 管理页面

    步骤如下:
    <1> 停止mq服务

    /sbin/service rabbitmq-server stop
    
    • 1

    <2> 开启web管理插件

    rabbitmq-plugins enable rabbitmq_management
    
    • 1

    <3> 默认端口号15672

    初始账号/密码guest/guest 
    
    • 1

    <4>添加一个新的用户

    rabbitmqctl add_user  
    
    • 1

    <5>设置用户角色

    rabbitmqctl set_user_tags  administrator
    
    • 1

    <6>设置用户权限

    rabbitmqctl set_ permessions [-p ]   <write> 
    
    • 1

    rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
    
    • 1

    用户admin 具有/vhost这个virtual host中所有的资源的配置,读,写权限
    <7>查看当前用户和角色

    rabbitmqctl list_users
    
    • 1
  • 相关阅读:
    Bert:一切过往,皆为序章
    PyQt5 布局Layout
    最详解的正则表达式------贪婪和非贪婪、转义符、分组
    Spring自定义参数解析器设计
    机器视觉系统选型-镜头选型
    TSINGSEE青犀基于AI视频智能分析的客流统计分析场景方案
    CANoe-设置CAN信号时提示没有信号驱动可用的问题
    游戏中的语音聊天方案
    Linux安装JDK最新版
    cross-env: 如何使用umi配置多环境打包
  • 原文地址:https://blog.csdn.net/qq_42000631/article/details/126304494