美文网首页
01给女朋友讲讲rabbitmq-安装与简述

01给女朋友讲讲rabbitmq-安装与简述

作者: XueFengDong | 来源:发表于2021-07-26 20:22 被阅读0次

    一、AMQP协议

    高级消息队列协议,一种约定俗成的规范。主要适用的消息中间件为RabbitMq、ActiveMq。

    发布者(Publisher)发布消息(Message),经由交换机(Exchange)。
    交换机根据路由规则将收到的消息分发给与该交换机绑定的队列(Queue)。
    最后 AMQP 代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取。


    AMQP模型

    二、RabbitMQ概念

    RabbitMQ是一个消息中间件,可以接收、存储并转发消息,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
    它类似于我们生活中的快递站点,当你要发送包裹时,你把你的包裹放在快递站点,快递员最终会把你的快递送到收件人那里。
    应用场景:

    • 异步处理。把消息放入消息中间件中,等到需要的时候再去处理。
    • 流量削峰。例如秒杀活动,在短时间内访问量急剧增加,使用消息队列,当消息队列满了就拒绝响应,跳转到错误页面,这样就可以使得系统不会因为超负载而崩溃。
    • 应用解耦。假设某个服务A需要给许多个服务(B、C、D)发送消息,当某个服务(例如B)不需要发送消息了,服务A需要改代码再次部署;当新加入一个服务(服务E)需要服务A的消息的时候,也需要改代码重新部署;另外服务A也要考虑其他服务挂掉,没有收到消息怎么办?要不要重新发送呢?是不是很麻烦,使用MQ发布订阅模式,服务A只生产消息发送到MQ,B、C、D从MQ中读取消息,需要A的消息就订阅,不需要了就取消订阅,服务A不再操心其他的事情,使用这种方式可以降低服务或者系统之间的耦合。

    三、RabbitMQ安装

    RabbitMQ依赖于erlang语言,所以安装之前需要先安装erlang语言环境

    erlang下载地址: https://www.erlang-solutions.com/downloads/
    rabbitmq下载地址:https://github.com/rabbitmq/rabbitmq-server/releases

    本文采用的版本
    rabbitmq:3.8.19
    erlang:23.2

    准备好对应的rmp安装包后,我们就可以开始了

    image.png
    1.安装erlang
    安装所需环境
    yum -y install unixODBC
    yum -y install socat
    

    安装erlang

    rpm -Uvh esl-erlang_23.2-1_centos_7_amd64.rpm 
    

    检测是否安装成功

    [root@localhost soft]# erl
    Erlang/OTP 23 [erts-11.1.4] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
    
    Eshell V11.1.4  (abort with ^G)
    1> 
    

    2.安装rabbitmq

    rpm -Uvh rabbitmq-server-3.8.19-1.el7.noarch.rpm
    

    rabbitmq现已安装在您的系统上。
    操作rabbitmq命令:

    # 加入开机自启
    systemctl enable rabbitmq-server
    # 启动rabbitmq
    systemctl start rabbitmq-server
    # 停止rabbitmq
    systemctl stop rabbitmq-server
    # 重启rabbitmq
    systemctl restart rabbitmq-server
    # 检查rabbitmq运行状态
    systemctl status rabbitmq-server
    

    成功启动后,状态如下:

    [root@localhost soft]# systemctl status rabbitmq-server
    ● rabbitmq-server.service - RabbitMQ broker
       Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
       Active: active (running) since 二 2021-07-20 17:17:39 CST; 21s ago
     Main PID: 6590 (beam.smp)
       Status: "Initialized"
       CGroup: /system.slice/rabbitmq-server.service
               ├─6590 /usr/lib/erlang/erts-11.1.4/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -- -root /usr/lib/erlang -prog...
               ├─6605 erl_child_setup 32768
               ├─6639 /usr/lib/erlang/erts-11.1.4/bin/epmd -daemon
               ├─6664 inet_gethost 4
               └─6665 inet_gethost 4
    
    7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: TLS Library: OpenSSL - OpenSSL 1.0.2k-fips  26 Jan 2017
    7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Doc guides:  https://rabbitmq.com/documentation.html
    7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Support:     https://rabbitmq.com/contact.html
    7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Tutorials:   https://rabbitmq.com/getstarted.html
    7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Monitoring:  https://rabbitmq.com/monitoring.html
    7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Logs: /var/log/rabbitmq/rabbit@localhost.log
    7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
    7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Config file(s): (none)
    7月 20 17:17:38 localhost.localdomain rabbitmq-server[6590]: Starting broker... completed with 0 plugins.
    7月 20 17:17:39 localhost.localdomain systemd[1]: Started RabbitMQ broker.
    

    3.修改防火墙和SELinux规则
    如果您已运行防火墙 ,运行以下命令开放端口。如果没有开启防火墙,可以忽略此步骤。

    firewall-cmd –zone=public –permanent –add-port=4369/tcp
    firewall-cmd –zone=public –permanent –add-port=25672/tcp
    firewall-cmd –zone=public –permanent –add-port=5671-5672/tcp
    firewall-cmd –zone=public –permanent –add-port=15672/tcp
    firewall-cmd –zone=public –permanent –add-port=61613-61614/tcp
    firewall-cmd –zone=public –permanent –add-port=1883/tcp
    firewall-cmd –zone=public –permanent –add-port=8883/tcp
    
    firewall-cmd –reload
    

    如果您启用SELinux,则必须运行以下命令以允许RabbitMQ服务。

    setsebool -P nis_enabled 1
    

    4.开启rabbitmq的web控制台

    启动RabbitMQ Web管理控制台

    rabbitmq-plugins enable rabbitmq_management
    

    访问RabbitMQ的管理面板http://IP:15672/

    image.png
    默认用户的用户名密码为guest/guest,如果直接使用此用户登录,会提示User can only log in via localhost
    image.png
    解决方案:
    第一种
    创建/etc/rabbitmq/rabbitmq.config文件并添加以下内容
    [{rabbit, [{loopback_users, []}]}].
    

    然后重启rabbitmq服务即可
    第二种
    直接添加其他用户

    # 添加用户并设置密码
    rabbitmqctl add_user admin 123456
    # 给用户添加标签
    rabbitmqctl set_user_tags admin administrator
    # 给用户设置权限
    rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    

    完成后可直接用创建的用户登录


    image.png
    用户列表.png

    相关文章

      网友评论

          本文标题:01给女朋友讲讲rabbitmq-安装与简述

          本文链接:https://www.haomeiwen.com/subject/rwxmpltx.html