事件的起因是要對接一個rabbitmq,rabbitmq的賬號是000008。結(jié)果程序在啟動時候一直報錯,報錯信息如下:
Caused by: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
從報錯信息上可以看出是授權(quán)失敗,肯定是賬號密碼的問題。
但是確認(rèn)了賬號密碼及配置文件中的配置。
spring:
rabbitmq:
host: myip
port: 5672
username: 000008
password: mypwd
后面也是發(fā)現(xiàn),同一rabbitmq環(huán)境下的test用戶,是可以連接的。
兩個用戶的權(quán)限也是一樣的,使用的程序也是一樣的。
發(fā)現(xiàn)上述奇怪的現(xiàn)象后,陷入了沉思,后面啟動時候直接debug代碼,才發(fā)現(xiàn)問題之所在。
原來用戶000008在程序讀取后竟然不是000008。
后面經(jīng)過查閱資料,了解yml文件讀取的一個原理,對于以數(shù)字0開頭的數(shù)字型值,在讀取時候會按照8進(jìn)制讀取,所以實際讀取到的并不是000008。
綜合以上,把配置文件中用戶名修改為字符串即可。
spring:
rabbitmq:
host: myip
port: 5672
username: '000008'
password: mypwd
所以綜合以上,在yml文件中配置相應(yīng)的數(shù)字型值時,為了防止意外,最好加上單引號。