• 【RabbitMQ实战】01 3分钟在Linux上安装RabbitMQ


    本节采用docker安装RabbitMQ。采用的是bitnami的镜像。Bitnami是一个提供各种流行应用的Docker镜像和软件包的公司。采用docker的方式3分钟就可以把我们想安装的程序运行起来,不得不说真的很方便啊,好了,开搞。使用前提:Linux虚拟机,安装好了docker环境。如果没有安装docker的话,请参考这里,先把docker先安装上。

    一、搜索镜像

    [root@localhost ~]# docker search rabbitmq
    NAME                                      DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
    rabbitmq                                  RabbitMQ is an open source multi-protocol me…   4887      [OK]       
    bitnami/rabbitmq                          Bitnami Docker Image for RabbitMQ                103                  [OK]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里我们选择bitname/rabbitmq

    二、下载镜像

    [root@localhost ~]# docker pull bitnami/rabbitmq
    Using default tag: latest
    latest: Pulling from bitnami/rabbitmq
    
    • 1
    • 2
    • 3

    三、把RabbitMQ镜像跑起来

    docker run -d --name rabbitmq \
    -e RABBITMQ_USERNAME=admin \
    -e RABBITMQ_PASSWORD=admin \
    -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 bitnami/rabbitmq
    
    • 1
    • 2
    • 3
    • 4

    其中RABBITMQ_USERNAME是用户名
    RABBITMQ_PASSWORD是密码
    关于更多环境变量的说明,见文末

    四、查看运行效果

    看一下docker容器是否成功启动了,下面可以看到正在运行

    [root@localhost ~]# docker ps | grep rabbit
    0d5cb60e3a06   bitnami/rabbitmq       "/opt/bitnami/script…"   22 seconds ago   Up 20 seconds   4369/tcp, 5551-5552/tcp, 0.0.0.0:1883->1883/tcp, :::1883->1883/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp, 0.0.0.0:25672->25672/tcp, :::25672->25672/tcp, 0.0.0.0:61613->61613/tcp, :::61613->61613/tcp, 15671/tcp   rabbitmq
    
    • 1
    • 2

    输入地址访问一下控制台
    http://192.168.56.201:15672/#/
    用户名:admin,密码admin
    登录成功
    在这里插入图片描述
    到此为止,我们就可以愉快地和RabbitMQ玩耍了

    五、关于环境变量的说明

    来源于官网

    RABBITMQ_VHOST: RabbitMQ application vhost. Default: /
    RABBITMQ_VHOSTS: List of additional virtual host (vhost), separated by space. E.g.: /shared /prioritized /tasks
    RABBITMQ_USERNAME: RabbitMQ application username. Default: user
    RABBITMQ_PASSWORD: RabbitMQ application password. Default: bitnami
    RABBITMQ_SECURE_PASSWORD: Whether to set the RabbitMQ password securely. This is incompatible with loading external RabbitMQ definitions. Default: no
    RABBITMQ_LOAD_DEFINITIONS: Whether to load external RabbitMQ definitions. This is incompatible with setting the RabbitMQ password securely. Default: no.
    RABBITMQ_ERL_COOKIE: Erlang cookie to determine whether different nodes are allowed to communicate with each other.
    RABBITMQ_NODE_TYPE: Node Type. Valid values: stats, queue-ram or queue-disc. Default: stats
    RABBITMQ_NODE_NAME: Node name and host. E.g.: node@hostname or node (localhost won't work in cluster topology). Default rabbit@localhost. If using this variable, ensure that you specify a valid host name as the container wil fail to start otherwise. If using a fully qualified domain name, RABBITMQ_USE_LONGNAME needs to be set to true as well.
    RABBITMQ_USE_LONGNAME: When set to true this will cause RabbitMQ to use fully qualified names to identify nodes. Default: false
    RABBITMQ_FORCE_BOOT: Force a node to start even if it was not the last to shut down. Default: no
    RABBITMQ_CLUSTER_NODE_NAME: Node name to cluster with. E.g.: clusternode@hostname
    RABBITMQ_CLUSTER_PARTITION_HANDLING: Cluster partition recovery mechanism. Default: ignore
    RABBITMQ_NODE_PORT_NUMBER: Node port. Default: 5672
    RABBITMQ_NODE_SSL_PORT_NUMBER: RabbitMQ node port number for SSL connections. Default: 5671
    RABBITMQ_SSL_CACERTFILE: Path to the RabbitMQ server SSL CA certificate file. No defaults.
    RABBITMQ_SSL_CERTFILE: Path to the RabbitMQ server SSL certificate file. No defaults.
    RABBITMQ_SSL_KEYFILE: Path to the RabbitMQ server SSL certificate key file. No defaults.
    RABBITMQ_COMBINED_CERT_PATH: Cert- and keyfile are combined automatically into one combined file at this file path. If you are using a combined certificate anyways, mount it to the container and set this path to the mounted file. Default: /tmp/rabbitmq_combined_keys.pem
    RABBITMQ_SSL_DEPTH: Maximum number of non-self-issued intermediate certificates that may follow the peer certificate in a valid certification path. No defaults.
    RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT: Whether to reject TLS connections if client fails to provide a certificate. Default: verify_none
    RABBITMQ_SSL_VERIFY: Whether to enable peer SSL certificate verification. Default: no
    RABBITMQ_PLUGINS: Comma, semi-colon or space separated list of plugins to enable during the initialization. No defaults.
    RABBITMQ_COMMUNITY_PLUGINS: Comma, semi-colon or space separated list of URLs where to download custom plugins during the initialization. No defaults.
    Management server configuration
    RABBITMQ_MANAGEMENT_BIND_IP: RabbitMQ management server bind IP address. Default: 0.0.0.0
    RABBITMQ_MANAGEMENT_PORT_NUMBER: RabbitMQ management server port number. Default: 15672
    RABBITMQ_MANAGEMENT_SSL_PORT_NUMBER: RabbitMQ management server port number for SSL/TLS connections. No defaults.
    RABBITMQ_MANAGEMENT_SSL_CACERTFILE: Path to the RabbitMQ management server SSL CA certificate file. No defaults.
    RABBITMQ_MANAGEMENT_SSL_CERTFILE: Path to the RabbitMQ management server SSL certificate file. No defaults.
    RABBITMQ_MANAGEMENT_SSL_KEYFILE: Path to the RabbitMQ management server SSL certificate key file. No defaults.
    RABBITMQ_MANAGEMENT_SSL_DEPTH: Maximum number of non-self-issued intermediate certificates that may follow the peer certificate in a valid certification path, for the RabbitMQ management server. No defaults.
    RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT: Whether to reject TLS connections if client fails to provide a certificate for the RabbitMQ management server. Default: yes
    RABBITMQ_MANAGEMENT_SSL_VERIFY: Whether to enable peer SSL certificate verification for the RabbitMQ management server. Default: verify_peer
    LDAP configuration
    RABBITMQ_ENABLE_LDAP: Enable the LDAP configuration. Defaults: no
    RABBITMQ_LDAP_TLS: Enable secure LDAP configuration. Defaults: no
    RABBITMQ_LDAP_SERVERS: Comma, semi-colon or space separated list of LDAP server hostnames. No defaults.
    RABBITMQ_LDAP_SERVERS_PORT: LDAP servers port. Defaults: 389
    RABBITMQ_LDAP_USER_DN_PATTERN: DN used to bind to LDAP in the form cn=$${username},dc=example,dc=org. No defaults.
    Memory and disk configuration
    RABBITMQ_VM_MEMORY_HIGH_WATERMARK: High memory watermark for RabbitMQ to block publishers and prevent new messages from being enqueued. Can be specified as an absolute or relative value (as percentage or value between 0 and 1). No defaults.
    RABBITMQ_DISK_FREE_RELATIVE_LIMIT: Disk relative free space limit of the partition on which RabbitMQ is storing data. Default: 1.0
    RABBITMQ_DISK_FREE_ABSOLUTE_LIMIT: Disk absolute free space limit of the partition on which RabbitMQ is storing data (takes precedence over the relative limit). No defaults.
    RABBITMQ_ULIMIT_NOFILES: Resources limits: maximum number of open file descriptors. Default: 65536
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    六、进入RabbitMQ容器一探究竟

    首先进入容器

    [root@localhost ~]# docker exec -it rabbitmq bin/bash
    
    • 1

    rabbitmq是依赖erlang环境的,所以查看一下erlang是否安装成功
    输入 erl,可以看到如下输出

    
    ```bash
    I have no name!@0d5cb60e3a06:/$ erl
    Erlang/OTP 24 [erts-12.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [jit]
    
    Eshell V12.2  (abort with ^G)
    1> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    bitnami的镜像,软件一般安装在opt/bitnami目录下

    I have no name!@0d5cb60e3a06:/$ cd opt/bitnami/
    I have no name!@0d5cb60e3a06:/opt/bitnami$ ls -al
    total 4
    drwxrwxr-x. 1 root root  22 Jan  4  2022 .
    drwxrwxr-x. 1 root root  21 Jan  4  2022 ..
    -rw-r--r--. 1 root root 659 Jan  4  2022 .bitnami_components.json
    drwxr-xr-x. 4 root root  33 Aug 17  2021 common
    drwxr-xr-x. 5 root root  44 Dec 15  2021 erlang
    drwxrwxr-x. 2 root root  26 Jan  4  2022 licenses
    drwxr-xr-x. 1 root root  45 Jan  4  2022 rabbitmq
    drwxrwxr-x. 1 root root  82 Jan  4  2022 scripts
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    查看rabbitmq是否正常启动
    rabbitmqctl status可以输出很多rabbitmq的信息
    包括版本信息,安装的插件,数据安装目录,还有一些指标信息。

    I have no name!@0d5cb60e3a06:/opt/bitnami$ rabbitmqctl status
    Status of node rabbit@localhost ...
    Runtime
    
    OS PID: 213
    OS: Linux
    Uptime (seconds): 816
    Is under maintenance?: false
    RabbitMQ version: 3.9.11
    Node name: rabbit@localhost
    Erlang configuration: Erlang/OTP 24 [erts-12.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [jit]
    Erlang processes: 378 used, 1048576 limit
    Scheduler run queue: 1
    Cluster heartbeat timeout (net_ticktime): 60
    
    Plugins
    
    Enabled plugin file: /opt/bitnami/rabbitmq/etc/rabbitmq/enabled_plugins
    Enabled plugins:
    
     * rabbitmq_management
     * amqp_client
     * rabbitmq_web_dispatch
     * cowboy
     * cowlib
     * rabbitmq_management_agent
    
    Data directory
    
    Node data directory: /bitnami/rabbitmq/mnesia/rabbit@localhost
    Raft data directory: /bitnami/rabbitmq/mnesia/rabbit@localhost/quorum/rabbit@localhost
    
    Config files
    
     * /opt/bitnami/rabbitmq/etc/rabbitmq/rabbitmq.conf
    
    Log file(s)
    
     * /opt/bitnami/rabbitmq/var/log/rabbitmq/rabbit@localhost_upgrade.log
     * <stdout>
    
    Alarms
    
    (none)
    
    Memory
    
    Total memory used: 0.1509 gb
    Calculation strategy: rss
    Memory high watermark setting: 0.4 of available memory, computed to: 1.1548 gb
    
    reserved_unallocated: 0.0833 gb (55.2 %)
    code: 0.0347 gb (22.97 %)
    other_system: 0.0238 gb (15.78 %)
    other_proc: 0.0192 gb (12.7 %)
    other_ets: 0.0032 gb (2.09 %)
    atom: 0.0014 gb (0.94 %)
    plugins: 0.0014 gb (0.9 %)
    binary: 5.0e-4 gb (0.31 %)
    mgmt_db: 2.0e-4 gb (0.15 %)
    connection_other: 1.0e-4 gb (0.09 %)
    mnesia: 1.0e-4 gb (0.07 %)
    metrics: 1.0e-4 gb (0.05 %)
    msg_index: 1.0e-4 gb (0.04 %)
    connection_readers: 0.0 gb (0.03 %)
    queue_procs: 0.0 gb (0.02 %)
    quorum_ets: 0.0 gb (0.0 %)
    connection_channels: 0.0 gb (0.0 %)
    stream_queue_procs: 0.0 gb (0.0 %)
    stream_queue_replica_reader_procs: 0.0 gb (0.0 %)
    connection_writers: 0.0 gb (0.0 %)
    allocated_unused: 0.0 gb (0.0 %)
    queue_slave_procs: 0.0 gb (0.0 %)
    quorum_queue_procs: 0.0 gb (0.0 %)
    stream_queue_coordinator_procs: 0.0 gb (0.0 %)
    
    File Descriptors
    
    Total: 6, limit: 1048479
    Sockets: 1, limit: 943629
    
    Free Disk Space
    
    Low free disk space watermark: 2.8869 gb
    Free disk space: 10.2966 gb
    
    Totals
    
    Connection count: 1
    Queue count: 1
    Virtual host count: 2
    
    Listeners
    
    Interface: [::], port: 15672, protocol: http, purpose: HTTP API
    Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
    Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97

    更多rabbitmq的操作,可以通过rabbitmqctl --help来查看

    I have no name!@0d5cb60e3a06:/opt/bitnami$ rabbitmqctl --help
    
    • 1

    七、扩展阅读

    在玩容器的时候,一般搜索镜像的时候,会发现bitnami仓库的镜像,star都比较高。发现确实好用!
    这里附上
    官网链接:https://bitnami.com/stacks
    在bitnami的官网,可以看到很多打包好的应用,链接进去是github的链接,是相关的镜像的说明
    在这里插入图片描述

    其中RabbitMQ镜像的git链接:https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq

  • 相关阅读:
    LeetCode讲解篇之198. 打家劫舍
    SAP ABAP——数据类型(三)【TYPE-POOL和INCLUDE嵌套定义类型】
    QFontDialog开发详解
    浅谈express框架
    埃尔米特插值(hermite 插值) C++
    mysql全量备份和增量备份脚本
    数字孪生技术最新八大应用实践方向
    Java项目:基于SSH的医院挂号预约系统
    HashMap源码
    nginx+websphere sendRedirect 端口错误
  • 原文地址:https://blog.csdn.net/suyuaidan/article/details/133169242