小编Han*_*ank的帖子

FeignClient 带有客户端证书和 Docker

我的微服务需要使用双向 ssl。每个微服务都是一个 Spring Boot 应用程序,注释为:

@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
@EnableZuulProxy
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

每个 yml 对 eureka/ribbon 都有类似的配置:

eureka:
    client:
        service-url:
          defaultZone: ${EUREKA_CLIENT_SERVICEURL_PROTOCOL:http}://${EUREKA_CLIENT_SERVICEURL_HOST:192.168.99.100}:${EUREKA_CLIENT_SERVICEURL_PORT:8761}/eureka/
    instance:
        secure-virtual-host-name: ${spring.application.name}
        prefer-ip-address: true
        non-secure-port-enabled: ${EUREKA_NON_SECURE_PORT_ENABLED:false}
        secure-port-enabled: ${EUREKA_SECURE_PORT_ENABLED:true}
        secure-port: ${server.port}
ribbon:
    IsSecure: true
    eureka:
        enabled: true
Run Code Online (Sandbox Code Playgroud)

每个微服务都有一个控制器,该控制器公开用于各种功能的 REST API。

当一个微服务需要调用另一个微服务端点时,我尝试通过创建该微服务的客户端接口来实现:

@FeignClient(name = "user", configuration = FeignConfiguration.class, url = "https://user")
public interface UserClient {
    @RequestMapping(method = RequestMethod.GET, value = "/test")
    String testUser();
}
Run Code Online (Sandbox Code Playgroud)

这是 Feign 配置:

@Configuration …
Run Code Online (Sandbox Code Playgroud)

spring docker spring-cloud netflix-eureka netflix-ribbon

2
推荐指数
1
解决办法
1万
查看次数