W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
可以配置負(fù)載均衡的?RestTemplate
?以重試失敗的請求。默認(rèn)情況下,禁用此邏輯。您可以通過在應(yīng)用程序的類路徑中添加Spring重試來啟用它。負(fù)載平衡的?RestTemplate
?遵循與重試失敗的請求有關(guān)的某些Ribbon配置值。您可以使用?client.ribbon.MaxAutoRetries
?,?client.ribbon.MaxAutoRetriesNextServer
?和?client.ribbon.OkToRetryOnAllOperations
?屬性。如果要通過對類路徑使用Spring重試來禁用重試邏輯,則可以設(shè)置?spring.cloud.loadbalancer.retry.enabled=false
?。有關(guān)這些屬性的作用的說明,請參見Ribbon文檔。
如果要在重試中實(shí)現(xiàn)?BackOffPolicy
?,則需要?jiǎng)?chuàng)建?LoadBalancedRetryFactory
?類型的bean并覆蓋?createBackOffPolicy
?方法:
@Configuration
public class MyConfiguration {
@Bean
LoadBalancedRetryFactory retryFactory() {
return new LoadBalancedRetryFactory() {
@Override
public BackOffPolicy createBackOffPolicy(String service) {
return new ExponentialBackOffPolicy();
}
};
}
}
前面示例中的
client
應(yīng)替換為您的Ribbon客戶名稱。
如果要向重試功能中添加一個(gè)或多個(gè)?RetryListener
?實(shí)現(xiàn),則需要?jiǎng)?chuàng)建類型為?LoadBalancedRetryListenerFactory
?的bean,并返回要用于給定服務(wù)的?RetryListener
?數(shù)組,如以下示例所示:
@Configuration
public class MyConfiguration {
@Bean
LoadBalancedRetryListenerFactory retryListenerFactory() {
return new LoadBalancedRetryListenerFactory() {
@Override
public RetryListener[] createRetryListeners(String service) {
return new RetryListener[]{new RetryListener() {
@Override
public <T, E extends Throwable> boolean open(RetryContext context, RetryCallback<T, E> callback) {
//TODO Do you business...
return true;
}
@Override
public <T, E extends Throwable> void close(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) {
//TODO Do you business...
}
@Override
public <T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) {
//TODO Do you business...
}
}};
}
};
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: