dubbo檢查服務狀態失敗分析
阿新 • • 發佈:2020-10-20
報錯:Failed to check the status of the service com.taotao.service.ItemService. No provider available for the servicejava
原因1:
Dubbo預設會在啟動時檢查依賴的服務是否可用,不可用時會丟擲異常,阻止Spring初始化完成,以便上線時,能及早發現問題,預設check=true。
如果你的Spring容器是懶載入的,或者通過API程式設計延遲引用服務,請關閉check,否則服務臨時不可用時,會丟擲異常,拿到null引用,如果check=false,總是會返回引用,當服務恢復時,能自動連上。
1、關閉某個服務的啟動時檢查:(沒有提供者時報錯)
<dubbo:reference interface=“com.foo.BarService” check=“false” />
2、關閉所有服務的啟動時檢查:(沒有提供者時報錯) 寫在定義服務消費者一方
<dubbo:consumer check=“false” />
3、關閉註冊中心啟動時檢查:(註冊訂閱失敗時報錯)
<dubbo:registry check=“false” />
原因2:service層未暴露提供者提供的方法,應該使用dubbo的@Service,而不是spring的@Service
原因3:如果專案使用了dubbo分散式,並且是在向service層提交請求執行方法時,如果方法使用了事務註解@Transactional,那麼@Service應該修改為@Service(interfaceClass = XXXService.class),指定一下事務開啟的實體類