目录
1.背景
在使用SpringBoot开发的应用中,使用到RabbitMQ,需要通过5672端口访问,但启动就报类似socket closed这样的错误。后来网上找了资料,发现是由于该端口默认不支持远程连接导致。
因此这里,记录一下解决该问题的过程,为同样遇到问题的“道友”提供思路。
2.环境
SpringBoot:2.2.2.RELEASE
RabbitMQ:rabbitmq-server-3.7.14
3.步骤
1)添加用户
由于RabbitMQ默认的guest用户不支持远程访问,这里新增加一个用户:admin。
方式一:网页上添加用户
A. 进入http://localhost:15672,登录:guest/ guest;
B. 点击tab,切换到“Admin”;
C.在“Add user”下方的输入框中添加用户名和密码,这里为admin/ admin,点击按钮“Add user”。
2)设置权限
A.添加成功后,上方列表中出现该记录,点击列表Name中的“admin”,修改权限;
B.如下图所示权限设定后,点击 Set permission。
方法二:命令行
# rabbitmqctl add_user admin admin
# rabbitmqctl set_user_tags csh administrator
# rabbitmqctl set_permissions -p / csh “.” “.” “.*”
3)停止服务
停止rabbitmq的所有服务(windows为例,在rabbitmq的安装目录bin目录下执行):
rabbitmq-service stop
4)修改配置
A.配置文件: <安装目录>\RabbitMQ Server\rabbitmq_server_3.7.14\etc\rabbitmq.config.example
B.去掉注释符号%%,增加用户:
%% ...
{tcp_listeners, [5672]},
{loopback_users, ["admin"]},
...
5)启动rabbitmq的服务
rabbitmq-service start
6)应用配置
SpringBoot应用中,application.yml文件中的配置
spring:
application:
...
rabbitmq:
host: xxx.xxx.xxx.xxx # rabbitmq server所在的主机IP
port: 5672
username: admin # 前面步骤中创建的用户名
password: admin # 前面步骤中创建的密码