SpringCloud WebClient作為負(fù)載均衡器客戶端

2023-06-08 10:46 更新

WebClient可以自動(dòng)配置為使用負(fù)載均衡器客戶端。要?jiǎng)?chuàng)建負(fù)載均衡的WebClient,請(qǐng)創(chuàng)建WebClient.Builder @Bean并使用@LoadBalanced限定符,如以下示例所示:

@Configuration
public class MyConfiguration {

	@Bean
	@LoadBalanced
	public WebClient.Builder loadBalancedWebClientBuilder() {
		return WebClient.builder();
	}
}

public class MyClass {
    @Autowired
    private WebClient.Builder webClientBuilder;

    public Mono<String> doOtherStuff() {
        return webClientBuilder.build().get().uri("http://stores/stores")
        				.retrieve().bodyToMono(String.class);
    }
}

URI需要使用虛擬主機(jī)名(即服務(wù)名,而不是主機(jī)名)。Ribbon客戶端用于創(chuàng)建完整的物理地址。

 重要

如果要使用@LoadBalanced WebClient.Builder,則需要在類路徑中有一個(gè)loadbalancer實(shí)現(xiàn)。建議您將org.springframework.cloud:spring-cloud-loadbalancer依賴項(xiàng)添加到項(xiàng)目中。然后,將在下面使用ReactiveLoadBalancer。或者,此功能也可以在spring-cloud-starter-netflix-ribbon上使用,但是該請(qǐng)求將由后臺(tái)的非響應(yīng)LoadBalancerClient處理。此外,spring-cloud-starter-netflix-ribbon已經(jīng)處于維護(hù)模式,因此我們不建議您將其添加到新項(xiàng)目中。

在下面使用的ReactorLoadBalancer支持緩存。如果檢測(cè)到cacheManager,將使用ServiceInstanceSupplier的緩存版本。如果沒(méi)有,我們將從發(fā)現(xiàn)服務(wù)中檢索實(shí)例,而不進(jìn)行緩存。如果您使用ReactiveLoadBalancer,建議您在項(xiàng)目中啟用緩存。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)