微服务 自动选择restTemplate

最近在做有关微服务的项目。学到了很多东西,但是中间也遇到了很多问题。

其中一个问题就是,一个微服务项目有时候需要通过url访问服务,有时候需要通过serviceId 访问注册在注册服务器的服务。

这个在开发过程中就感觉很麻烦。客户端我们是通过restTemplate访问的。

当访问url的服务时,需要直接使用restTemplate

而当访问serviceId的服务时,需要使用@AutoBalanced restTemplate。当时想把所有的serviceId写到配置文件里面,来区别使用哪个restTemplate。找了找,并没有找到提供这种服务的jar包。

后来就自己写了一个这样的工具包。

	
		com.github.davidmeng
		autoRouteRestTemplate
		0.0.1-SNAPSHOT
	

已经把代码上传到maven库里面。

 

    @LoadBalanced
    @Bean(name = "dockerRestTemplate")
    @ConditionalOnMissingBean(name = "dockerRestTemplate")
    RestTemplate dockerRestTemplate() {
        return new RestTemplate();
    }

    @Bean(name = "domainRestTemplate")
    @ConditionalOnMissingBean(name = "domainRestTemplate")
    RestTemplate domainRestTemplate() {
        return new RestTemplate();
    }

这个是两个RestTemplate的注释。如果在项目中,要对restTemplate进行配置,只要重新写这两个类就可以了。

dockerRestTemplate是需要通过serviceId访问的restTemplate

domainRestTemplate就是通过url的普通的restTemplate。

 

哪些访问dockerRestTemplate,哪个访问domainRestTemplate。是通过RouteDockerRule接口决定的。

里面只有一种方法

public boolean isDockerHost(URI host);

默认的方法是如果url里面含有"."那么就认为应该通过url访问。其他就是serviceId。

如果不符合项目需要,那么就需要重新写这个方法。

你可能感兴趣的:(spring,微服务)