• RabbitMQ学习笔记-rabbitMQ是什么


    分布式架构:一个请求由多个服务(服务或者系统)协同处理完成。

    RabbitMQ消息队列,或者说是一个消息中间键。

    MQ功能:

    1. 削峰:不让系统直接访问系统,而是通过MQ,然后交给MQ去访问系统,使得访问的人员进行排队。(有排队就会导致比较慢,但是安全有次序。)
    2. 应用解耦:通过队列去访问系统,各个系统之间通过MQ去完成,也就会不会产生过多故障。
    3. 异步处理:A-B,并不要A收到B的确定消息才会执行操作。

    MQ的分类:

    1. RabbitMQ: 和spring是一家公司的,使用AMQP(高级消息队列协议)基础上完成的,支持多种语言,缺点是商业版要付费。

    2. kafka:为大数据而生,有百万级TPS的,实时计算,吞吐量高,使用在日志采集等方面。缺点是,单机超过64个队列/分区,load会发生明显的飙高现象,队列越多,load越高,发送响应时间越长。消费失败不支持重试,支持消息顺序,但一代代理宕机后,会产生消息乱序,社区更新慢

    3. RocketMQ:由阿里开发,金融行业需要,使用java语言实现,参考了kafka,一般常用于订单,交易,充值,流计算,消息推送,日志处理,bingblog分发等场景。

      1. 优点:单机吞吐10w级别,信息可以做到0丢失,MQ功能比较完善,还是分布式,拓展性号,支持10亿级别的消息堆积,不会因为堆积而导致性能下降。
      2. 缺点:这次客户端语言不多,目前是java和C++,其中C++还不成熟,社区活跃一般。

    初级部分:

    RabbitMQ:是一个消息中间件,可以当做一个快递站,快递员发包裹到快递站,然后本地快递员将快递发给用户。

    生产者:生产者 - > mq (一个交换机可以绑定多个队列) -> 消费者,一般情况下是一个队列对应一个消费者,如果两个一个队列对应两个消费者,那么就只有一个消费者收到消息,这就想当与只有一个包裹是不可能发给两个人的。

    核心部分:

    1. 简单模式
    2. 工作模式
    3. 发布订阅模式
    4. 路由模式
    5. 主题模式
    6. 发布确认模式

    在这里插入图片描述

    connection:publisher/consumer 和 broker之间的TCP连接。

    Channel:如果每一次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销是巨大的,效率也比较低。channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销。

    安装rabbitMQ:

    官网:https://www.rabbitmq.com

    下载页面:https://www.rabbitmq.com/download.html

    我一般使用docker安装

    # latest RabbitMQ 3.10
    docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management
    
    • 1
    • 2

    其他安装方式:(手动安装)

    1. 首先现在linux下的压缩包,或者使用工具将安装包上传到linux系统。

    2. 安装rabbitMQ的支持依赖

      1. rpm -ivh erlang-21.3-1.el7.x86_64.rpm
      2. yml install socat -y
      3. rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
    3. 添加常用命令:

      1. 添加开机启动chkconfig rabbitmq-server on
      2. 启动服务
        1. 找到安装路径
        2. sbin下的service 里边的rabbitmq-server start /sbin/service rabbitmq-server start
        3. 查看服务状态/sbin/service rabbitmq-server status
        4. 停止服务/sbin/service rabbitmq-server stop
        5. 开启后台web管理插件rabbitmq-plugins enable rabbitmq_management(docker安装的不要这么操作)
        6. 使用账号访问,一般是账号密码都是guest,当然你必须保证你的端口号开放,如果云服务器的话,15972,注意ip地址,如果有域名的话,那么可以在域名后添加:15672直接访问.
        7. 如果不能直接访问的话,检查一下防火墙,systemctl stop firewalld,这个命令关闭本次防火墙,systemctl enable firewalld可以下次开机也关闭防火墙,systemctl status firewalld可以查看当前系统防护墙状态
        8. 添加一个新用户,如果是使用虚拟机的话,一般是不能直接使用guest登录的,当然这个我没碰到过
          1. 创建一个账号rabbitmqctl add_user 用户名 密码
          2. 设置用户角色 rabbitmqctl set_user_tags admin administractor
          3. 设置用户权限
            set_permission[-p ]
            举例:
            rabbitmqctl set_permission -p " / " admin ".* " ".* " " .* "用户user_admin具有/vhost1这个vritual host中的所有资源的配置,写,读权限。
          4. 当前用户和角色
            rabbitmqctl list_user
  • 相关阅读:
    Matlab迭代算法实现
    JS - 防抖与节流
    【python】获取URL_IP
    链表-哈希表 详解
    Java安全之Mojarra JSF反序列化
    Unity 获取桌面路径的方法
    Docker 镜像仓库是什么?有哪些镜像仓库命令?
    算法通关村第六村-白银挑战树的层序遍历
    七夕给女朋友准备的小惊喜网站制作(html+css+js)
    零基础学ptyhon之字典
  • 原文地址:https://blog.csdn.net/qq_45922256/article/details/127730838