如何在本地和线上安装和配置RabbitMQ

文章目录

  • [一. 本地](#一. 本地)
    • [1.1 安装](#1.1 安装)
    • [1.2 访问](#1.2 访问)
    • [1.3 配置](#1.3 配置)
    • [1.4 运行](#1.4 运行)
  • [二. 线上](#二. 线上)
    • [2.1 服务器安装 RabbitMQ](#2.1 服务器安装 RabbitMQ)
      • [2.1.1 安装 DNF](#2.1.1 安装 DNF)
      • [2.1.2 安装 RabbitMQ](#2.1.2 安装 RabbitMQ)
      • [2.1.3 登录 web 管理界面](#2.1.3 登录 web 管理界面)
      • [2.1.4 创建用户](#2.1.4 创建用户)
      • [2.1.5 禁用默认用户远程访问](#2.1.5 禁用默认用户远程访问)
      • [2.1.6 配置](#2.1.6 配置)
      • [2.1.7 运行启动](#2.1.7 运行启动)
    • [2.2 宝塔面板安装 RabbitMQ](#2.2 宝塔面板安装 RabbitMQ)
      • [2.2.1 安装 RabbitMQ](#2.2.1 安装 RabbitMQ)
      • [2.2.2 登录 web 管理界面](#2.2.2 登录 web 管理界面)
      • [2.2.3 创建用户](#2.2.3 创建用户)
      • [2.2.4 禁用默认用户远程访问](#2.2.4 禁用默认用户远程访问)
      • [2.2.5 配置](#2.2.5 配置)
      • [2.2.6 运行启动](#2.2.6 运行启动)
  • [三. 初始化 RabbitMQ](#三. 初始化 RabbitMQ)
    • [3.1 本地](#3.1 本地)
    • [3.2 线上](#3.2 线上)
  • [四. 启动项目](#四. 启动项目)
  • [五. 异常](#五. 异常)

一. 本地

1.1 安装

安装 Erlang + RabbitMQ,先安装 Erlang

  • Erlang 。https://www.erlang.org
  • 依赖安装完毕,就可以安装 RabbitMQ 了。(安装 RabbitMQ 直接双击 exe 程序即可安装)https://www.rabbitmq.com/docs/install-windows
  • 去查看系统服务,按[win + R],输入命令services.msc。找到 RabbitMQ 服务,右键 Start,状态为正在运行,搞定。
  • 安装rabbitmq-plugins(插件管理)。

windows 系统所有的脚本全是 bat 文件,这个命令不能直接运行;所以要给这条命令加上 .bat,然后复制这条命令。

java 复制代码
rabbitmq-plugins.bat enable rabbitmq_management

找到安装 RabbitMQ 路径的位置,进入sbin目录,这里面都是 RabbitMQ 的执行脚本。

  • rabbitmq-server.bat:操作 RabbitMQ 服务器相关的命令。
  • rabbitmq-plugins.bat:用来安装 RabbitMQ 的插件。

在目录栏上输出cmd,打开命令提示符;以管理员身份运行。

将命令粘贴到此处,回车,显示已经启动了,并配置了一些插件。

这里显示要重新启动后才生效,输入以下命令。

java 复制代码
# 关闭服务
net stop rabbitmqnet stop rabbitmq 
# 开启服务
net start rabbitmq 

1.2 访问

访问 http://localhost:15672,打开本地 web 管理页面;默认用户名密码都是 guest(文档有说明),点击Login

文档还有说明端口访问的端口号,15672 是监控面板的 UI;

ps.里面的 5672、15672 很重要,我们的应用程序之间就是通过 5672 端口来和 RabbitMQ 做链接的,就像 redis 的6379,es 的 9200是一样的。

登录 RabbitMQ 的管理页面。

就能看见 RabbitMQ 的管理页面。

1.3 配置

java 复制代码
  rabbitmq:
    host: localhost
    password: guest
    username: guest
    port: 5672
    virtual-host: /
    listener:
      direct:
        acknowledge-mode: manual

username和 password是guest是默认的。

virtual-host: /

1.4 运行

二. 线上

下面几个常用端口是需要放行的

  • 3306 MySQL
  • 6379 Redis
  • 15672 RabbitMQ web 面板
  • 5672 RabbitMQ
  • 22 端口 SSH
  • 443 HTTPS
  • 80 HTTP

2.1 服务器安装 RabbitMQ

2.1.1 安装 DNF

yum install epel-release

语句执行后,输入y即可。

yum install dnf

语句执行后,输入y即可。

安装成功

2.1.2 安装 RabbitMQ

  1. 指定仓库

    sudo dnf install -y https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm

  2. 安装 rabbitmq 默认会安装 erlang

    sudo dnf install -y rabbitmq-server-3.3.5-34.el7

  3. 开启 web 管理页面

    sudo rabbitmq-plugins enable rabbitmq_management

  4. 启动 RabbitMQ

    sudo systemctl start rabbitmq-server

  5. 查看运行状态

    systemctl status rabbitmq-server

  6. 设置开机自启动

    sudo systemctl enable rabbitmq-server

2.1.3 登录 web 管理界面

访问http://服务器IP:15672;打开服务器web 管理页面;默认账号、密码都是 guest;要是报错就自己再仔细看看是不是输入错误了。

2.1.4 创建用户

**注意:**如果你打算在自己的服务器上部署 RabbitMQ,你必须知道在默认设置下,使用 guest 账号是无法访问的。为何会这样呢?原因在于系统安全性的需求。如果你想从远程服务器访问管理面板,你需要创建一个新的管理员账号,不能使用默认的 guest 账号,否则会被系统拦截,导致无法访问或登录。

设置。云服务器中输入下面的命令。云服务器或者tabby中输入下面命令即可。

添加新用户

java 复制代码
rabbitmqctl add_user 'username' '2a55f70a841f18b97c3a7db939b7adc9e34a0f1b'

删除新用户

java 复制代码
rabbitmqctl delete_user 'username'

新建虚拟主机

java 复制代码
rabbitmqctl add_vhost my_vhost

新增加的用户赋予权限。

java 复制代码
# First ".*" for configure permission on every entity
# Second ".*" for write permission on every entity
# Third ".*" for read permission on every entity
rabbitmqctl set_permissions -p "custom-vhost" "username" ".*" ".*" ".*"

2.1.5 禁用默认用户远程访问

点击右侧的 User guest,会发现该用户拥有管理员权限,但这仅限于本地访问。如果你直接上线并使用默认的管理员权限,你可以想象可能出现的问题。比如,攻击者可能会扫描你服务器的端口,并不断尝试用 guest 账号登录。一旦找到一个开放的端口并用 guest 登录,攻击者就可以入侵你的服务器,然后在消息队列中不断添加消息,填满你的服务器硬盘。因此,为了安全,系统默认关闭了 guest 账号的远程访问权限,这也是官方出于安全考虑的措施。

关闭允许 guest 用户远程访问,为了安全。

2.1.6 配置

java 复制代码
  # rabbitmq 信息
  rabbitmq:
    host: *******
    password: ***
    username: *
    port: 5672
    listener:
      direct:
        acknowledge-mode: manual

等到部署到服务器上的时候

• host 服务器 IP 或者 域名

• port 端口默认 5672

• password 密码

• username 账号

2.1.7 运行启动

2.2 宝塔面板安装 RabbitMQ

下面几个端口是需要放行的

  • 3306 MySQL
  • 6379 Redis
  • 15672 RabbitMQ web 面板
  • 5672 RabbitMQ
  • 22 端口 SSH
  • 443 HTTPS
  • 80 HTTP

2.2.1 安装 RabbitMQ

  1. 安装。宝塔面板安装rabbitmq。
  2. 宝塔面板、服务器同时开放5672、15672的端口。

面板的管理员权限中更改管理员用户名和密码

2.2.2 登录 web 管理界面

  1. 访问http://服务器IP:15672;打开服务器web 管理页面。
  2. 账号、密码是 上面的管理员用户名和密码;要是报错就自己再仔细看看是不是输入错误了。
  3. 切忌不要使用新创建用户的用户名和密码;无法登录。

2.2.3 创建用户

**注意:**如果你打算在自己的服务器上部署 RabbitMQ,你必须知道在默认设置下,使用 guest 账号是无法访问的。为何会这样呢?原因在于系统安全性的需求。如果你想从远程服务器访问管理面板,你需要创建一个新的管理员账号,不能使用默认的 guest 账号,否则会被系统拦截,导致无法访问或登录。

  1. 创建用户
  1. 允许远程连接

执行好之后添加好的用户 Can access virtual hosts 那一栏就不会是黄颜色的了。

2.2.4 禁用默认用户远程访问

点击右侧的 User guest,会发现该用户拥有管理员权限,但这仅限于本地访问。如果你直接上线并使用默认的管理员权限,你可以想象可能出现的问题。比如,攻击者可能会扫描你服务器的端口,并不断尝试用 guest 账号登录。一旦找到一个开放的端口并用 guest 登录,攻击者就可以入侵你的服务器,然后在消息队列中不断添加消息,填满你的服务器硬盘。因此,为了安全,系统默认关闭了 guest 账号的远程访问权限,这也是官方出于安全考虑的措施。

关闭允许 guest 用户远程访问,为了安全。

2.2.5 配置

java 复制代码
  # rabbitmq 信息
  rabbitmq:
    host: *******
    password: ***
    username: *
    port: 5672
    listener:
      direct:
        acknowledge-mode: manual

等到部署到服务器上的时候

• host 服务器 IP 或者 域名

• port 端口默认 5672

• password 密码

• username 账号

2.2.6 运行启动

三. 初始化 RabbitMQ

3.1 本地

执行完需要 初始化的 Main 方法

执行完这两个 初始化的 Main 方法之后,打开本地 web 管理页面;发现队列中有多出来的初始化队列即可。

3.2 线上

配置Host、Usernamen、Password、Port;Port如果是默认的5672可以不配置。

其余初始化和本地一样。

四. 启动项目

  1. 启动MainApplication。
  2. 直接点击 Enable annotation processing
  3. 访问接口文档

五. 异常

如果说你首次执行比bi项目,想要使用消息队列功能的话

启动项目时,有下面的异常:

org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[bi_queue]

原因:这个队列还没声明,需要跑一段代码声明,跑一次就行了

先要初始化自己创建队列

执行main方法后,再次执行项目即可。

直接点击 Enable annotation processing

然后访问接口文档。

相关推荐
roman_日积跬步-终至千里31 分钟前
【分布式理论13】分布式存储:数据存储难题与解决之道
分布式
(; ̄ェ ̄)。1 小时前
在Nodejs中使用kafka(三)offset偏移量控制策略,数据保存策略
分布式·后端·kafka·node.js
binbinxyz3 小时前
【Kafka系列】Kafka 消息传递保障机制
分布式·kafka
火皇4054 小时前
Spring Boot 集成 RabbitMQ 并实现消息确认机制
spring boot·rabbitmq·java-rabbitmq
T.O.P115 小时前
分布式ID介绍&实现方案总结
分布式
Golinie5 小时前
【Go | 从0实现简单分布式缓存】-1:LRU缓存淘汰策略与单机并发缓存
分布式·缓存·golang
漫步者TZ8 小时前
【kafka系列】Kafka事务的实现原理
数据库·分布式·kafka
IT闫10 小时前
【Dubbo+Zookeeper】——SpringBoot+Dubbo+Zookeeper知识整合
分布式·zookeeper·云原生·dubbo
2501_9032386511 小时前
Kafka中commitAsync的使用与实例解析
分布式·kafka·个人开发·linq
何似在人间57512 小时前
RabbitMQ 消息队列的工作模式
分布式·rabbitmq