spring - 如何配置 reactor-netty 以使用 SSL?

标签 spring ssl netty reactive-programming project-reactor

我正在尝试熟悉 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。有谁知道如何配置 reactor-netty 以支持 SSL?

最佳答案

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 所必需的。

关于spring - 如何配置 reactor-netty 以使用 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38958165/

相关文章:

amazon-web-services - 为 AWS 负载均衡器启用 mod_ssl

docker - 如何使用 Netty 连接到运行 HTTP 服务器的 UNIX 域套接字?

java - 交易问题 : No Hibernate Session bound to thread

尝试访问 S3 Bucket 时出现 javax.net.ssl.SSLPeerUnverifiedException

java - Spring AOP中没有这样的方法将切入点应用于批处理作业

security - 如何将 SSL 原始证书附加到 CloudFlare 的根证书?

java - 使用 Netty 或其他轻量级 NIO 库的请求-响应

java - 在netty中丢弃消息

java - 如何在iBatis + Spring中获取存储过程的名称

java - 将查询参数传递到下一页