Tag: netty

如何使用Netty4ClientHttpRequestFactory为Spring AsyncRestTemplate设置代理?

当我使用SimpleRequestFactory和AsyncRestTemplate时,我可以轻松配置一个HTTP代理服务器。 我可以做(Kotlin示例代码): @Bean open fun asyncRestTemplate(): AsyncRestTemplate { val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(“127.0.0.1”, 8008)) val requestFactory = SimpleClientHttpRequestFactory().apply { this.setConnectTimeout(TimeUnit.SECONDS.toMillis(10).toInt()) this.setReadTimeout(TimeUnit.SECONDS.toMillis(10).toInt()) this.setProxy(proxy) this.setTaskExecutor(taskExecutor()) } return AsyncRestTemplate(requestFactory) } 或者我可以简单地设置相应的系统属性: -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8008 。 然而,在我从SimpleClientHttpRequestFactory切换到Netty4ClientHttpRequestFactory的那一刻,没有直接配置代理的明显方式,看起来这个客户端也不尊重系统属性。 val requestFactory = Netty4ClientHttpRequestFactory().apply { this.setConnectTimeout(TimeUnit.SECONDS.toMillis(10).toInt()) this.setReadTimeout(TimeUnit.SECONDS.toMillis(10).toInt()) //this.setProxy(proxy) //??? } 一旦我换了netty客户端,我不知道如何通过代理。 我对使用netty客户端的兴趣是我不仅要做异步请求,而且我希望这是非阻塞的。 我希望在这里不要做错误的假设。 有谁知道如何使用Netty4ClientHttpRequestFactory时使用代理服务器,也许知道我可以使用Spring支持的另一个非阻塞客户端?

Spring WebFlux:只有一个连接接收用户允许

我正在用Spring 5 Webflux和Kotlin编写一个简单的应用程序。 我正在尝试以下列方式实现PUT端点: PUT(“/confs/{id}”, { val id = it.pathVariable(“id”) ServerResponse.ok().body(service.save(it.bodyToMono(Item::class.java)), Item::class.java) }) 保存技巧是我尝试从项目中读取城市名称,解析地理坐标,在原始项目中覆盖它们,然后使用Spring Data Mongo Reactive回购保存到Mongo。 fun save(item: Mono): Mono { val geo = item.flatMap { val city = it.location?.city ?: “Somewhere” geoService.resolveGeoFromCity(city) } val zipped = item.zipWith(geo) .map { it.t1.location?.geo = it.t2 it.t1 } return repo.saveAll(zipped) .toMono() } 解析地理坐标的代码在这里: @Service class GeoService() { […]

与AsyncRestTemplate Netty客户端的Spring启动失败

我有一个Spring Boot 1.3.6应用程序,它使用嵌入式的Tomcat服务器。 该应用程序具有一个简单的回应请求的单个端点。 后来我定义了一个相应的客户端使用AsyncRestTemplate调用这个简单的端点,但是如果我的客户端使用Netty4ClientHttpRequestFactory请求失败,否则它会成功。 我的例子在Kotlin中,但是它在Java中失败了,所以它不需要使用我用来实现它的语言。 服务器 @SpringBootApplication open class EchoApplication { companion object { @JvmStatic fun main(args: Array<String>) { SpringApplication.run(EchoApplication::class.java, *args) } } @Bean open fun objectMapper(): ObjectMapper { return ObjectMapper().apply { dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX") registerModule(KotlinModule()) } } @Bean open fun customConverters(): HttpMessageConverters { return HttpMessageConverters(listOf(MappingJackson2HttpMessageConverter(objectMapper()))) } } 我的端点如下所示: @RestController class EchoController { @RequestMapping(value="/foo", […]

如何在Spring Boot应用程序中为Netty配置TLS?

我的微服务正在使用最新版本的Spring Boot,Spring WebFlux(Undertow),Spring Data MongoDB,Spring Cloud Netflix和Kotlin … 现在我已经设置了一个演示项目来使用新的功能界面,而不是Spring WebFlux中的注释。 与HTTP使用Netty工作正常。 但是,我找不到任何有关如何使用TLS配置Netty的信息。 HTTPS。 任何提示表示赞赏!