yaml文件读取以0开头数字型值的坑

事件的起因是要对接一个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文件中配置相应的数字型值时,为了防止意外,最好加上单引号。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容