微服务 自动选择restTemplate

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

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

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

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

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

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

	<dependency>
		<groupId>com.github.davidmeng</groupId>
		<artifactId>autoRouteRestTemplate</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</dependency>

已经把代码上传到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。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值