事件的起因是要对接一个rabbitmq,rabbitmq的账号是000008。结果程序在启动时候一直报错,报错信息如下:
Caused by: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
从报错信息上可以看出是授权失败,肯定是账号密码的问题。
但是确认了账号密码及配置文件中的配置。
spring:
rabbitmq:
host: myip
port: 5672
username: 000008
password: mypwd
后面也是发现,同一rabbitmq环境下的test用户,是可以连接的。
两个用户的权限也是一样的,使用的程序也是一样的。
发现上述奇怪的现象后,陷入了沉思,后面启动时候直接debug代码,才发现问题之所在。
原来用户000008在程序读取后竟然不是000008。
后面经过查阅资料,了解yml文件读取的一个原理,对于以数字0开头的数字型值,在读取时候会按照8进制读取,所以实际读取到的并不是000008。
综合以上,把配置文件中用户名修改为字符串即可。
spring:
rabbitmq:
host: myip
port: 5672
username: '000008'
password: mypwd
所以综合以上,在yml文件中配置相应的数字型值时,为了防止意外,最好加上单引号。