<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 簡介 * 由于SpringCloud從2020.*版本開始不再支持Hystrix,故JPower也做了調整,跟隨spring版本后feign的熔斷機制采用了阿里巴巴的sentinel。 * sentinel具體文檔可查看[sentinel流控](./sentinel流控.md) ## 代碼示例 1. 在`system-api`中新建熔斷類,命名為`SystemClientFallback` ![](https://img.kancloud.cn/9f/61/9f616a360d0c2eda0896a6c4ec377433_824x730.png) 2. 實現`SystemClient`接口,此時只需返回對應數據即可,不需要再定義為 Controller 3. 代碼如下,**以下代碼已在工程中實現** ~~~ @Component public class SystemClientFallback implements SystemClient { @Override public ResponseData<List<String>> queryChildOrgById(String id) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<TbCoreOrg> queryOrgById(String orgId) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<TbCoreClient> getClientByClientCode(String clientCode) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<List<Object>> getUrlsByRoleIds(List<String> roleIds) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<TbCoreTenant> getTenantByCode(String tenantCode) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<List<TbCoreFunction>> getMenuListByRole(List<String> roleIds) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<List<TbCoreDataScope>> getAllRoleDataScope() { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<List<TbCoreDataScope>> getDataScopeByRole(List<String> roleIds) { return ReturnJsonUtil.fail("查詢失敗"); } } ~~~ 4. 修改SystemClient,增加熔斷配置 ![](https://img.kancloud.cn/31/6e/316e55b38434d3ed700324dc5d8252e7_2160x1478.png) 5. 這是我們再使用feign進行服務調用時,如果服務發生異常,就會返回查詢失敗的提示 6. 有時我們服務調用發生錯誤時我們想知道究竟發生什么錯誤,這時我們需要打印這些錯誤 7. 我們這里以`user-api`為例,看下`UserClientFallback`代碼,可以看到繼承`FallbackFactory`并實現`UserClient`泛型 ~~~ @Component @Slf4j public class UserClientFallback implements FallbackFactory<UserClient> { @Override public UserClient create(Throwable cause) { return new UserClient() { @Override public ResponseData<TbCoreUser> queryUserByLoginId(String loginId, String tenantCode) { log.error("調用queryUserByLoginIdPwd失敗,參數:loginId={},e={}",loginId,cause); return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<List<String>> getRoleIds(String userId) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData updateUserLoginInfo(TbCoreUser user) { log.error("調用updateUserLoginInfo失敗,參數:{},e={}", JSON.toJSONString(user),cause); return ReturnJsonUtil.fail("更新失敗"); } @Override public ResponseData<TbCoreUser> queryUserByCode(String otherCode, String tenantCode) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<TbCoreUser> get(String id) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData<TbCoreUser> queryUserByPhone(String phone, String tenantCode) { return ReturnJsonUtil.fail("查詢失敗"); } @Override public ResponseData saveAdmin(TbCoreUser user,String roleId) { log.error("調用saveAdmin失敗,參數:user={},roleId={} ,e={}",user,roleId,cause); return ReturnJsonUtil.printJson(ConstantsReturn.RECODE_API, cause.getMessage(),false); } }; } } ~~~ 8. `UserClient`修改如下 ![](https://img.kancloud.cn/a7/ab/a7ab7d36f395976c6de67debc982e734_2428x1094.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看