【问题标题】:How do I configure reactor-netty to use SSL?如何配置 reactor-netty 以使用 SSL?
【发布时间】:2016-12-21 20:10:49
【问题描述】:

我正在尝试熟悉 Spring 的 Project Reactor (https://projectreactor.io/),并构建了一个小型应用程序来通过 SSL 对另一个服务进行 REST 调用。我找不到任何方法来配置 org.springframework.web.client.reactive.WebClient 以通过 SSL 发出请求。似乎没有关于此的文档。我正在使用reactor-core 3.0.0.RC1 和reactor-netty 0.5.0.M3,以及Spring Framework 5.0.0.M1。有谁知道如何使用 SSL 支持配置 reactor-netty

【问题讨论】:

    标签: spring ssl netty reactive-programming project-reactor


    【解决方案1】:

    2017-01-04 更新:

    这已在 Spring Framework 的 5.0.0.M4 版本中得到更正,this patch

    原答案:

    我发现解决方案是创建一个尊重 SSL 的新 ClientHttpConnector 实现。

    public class ReactorClientHttpsAwareConnector implements ClientHttpConnector {
    
        @Override
        public Mono<ClientHttpResponse> connect(HttpMethod method, URI uri,
                                                Function<? super ClientHttpRequest, Mono<Void>> requestCallback) {
    
            return reactor.ipc.netty.http.HttpClient.create()
                                                    .request(io.netty.handler.codec.http.HttpMethod.valueOf(method.name()),
                                                        uri.toString(),
                                                        httpClientRequest -> requestCallback
                                                            .apply(new ReactorClientHttpRequest(method, uri, httpClientRequest)))
                                                    .cast(HttpInbound.class)
                                                    .otherwise(HttpException.class, exc -> Mono.just(exc.getChannel()))
                                                    .map(ReactorClientHttpResponse::new);
        }
    }
    

    HttpClient.create() 是客户端 SSL 感知所必需的。

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 2019-04-04
      • 2019-07-12
      • 2019-03-15
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 2020-01-07
      • 2018-05-07
      相关资源
      最近更新 更多