Java 播放WSClient流超时

Java 播放WSClient流超时,java,playframework,akka,playframework-2.5,Java,Playframework,Akka,Playframework 2.5,我想在Play 2.5应用程序中使用服务器发送的事件。API端点的内容类型为文本/事件流 我无法设置REST调用的超时时间。 当我将请求超时设置为-1-时,如果在120秒后无异常地调用complete,请求将永远不会超时 CompletionStage<StreamedResponse> events = ws.url("https://example.com/events") .setMethod("GET") .setHea

我想在Play 2.5应用程序中使用服务器发送的事件。API端点的内容类型为
文本/事件流

我无法设置REST调用的超时时间。 当我将请求超时设置为
-1
-时,如果在120秒后无异常地调用complete,请求将永远不会超时

    CompletionStage<StreamedResponse> events = ws.url("https://example.com/events")
            .setMethod("GET")
            .setHeader("Accept", "text/event-stream")
            .setRequestTimeout(-1)
            .stream();
    events.thenCompose(res -> {
        Source<ByteString, ?> responseBody = res.getBody();
        return responseBody.via(Framing.delimiter(ByteString.fromString("\n"), Integer.MAX_VALUE, FramingTruncation.ALLOW)).map(ByteString::utf8String).runForeach(data -> logger.info(data), materializer);
    }).whenComplete((done, throwable) -> {
        if (throwable != null) {
            logger.error(throwable.getMessage(), throwable);
        }
        logger.info("Done");
    });
CompletionStage事件=ws.url(“https://example.com/events")
.setMethod(“GET”)
.setHeader(“接受”、“文本/事件流”)
.setRequestTimeout(-1)
.stream();
事件。然后撰写(res->{
Source responseBody=res.getBody();
返回responseBody.via(Framing.delimiter(ByteString.fromString(“\n”)、Integer.MAX_值、framingtrancation.ALLOW)).map(ByteString::utf8String).runForeach(data->logger.info(data)、materializer);
}).完成时((完成,可丢弃)->{
if(可丢弃!=null){
logger.error(throwable.getMessage(),throwable);
}
logger.info(“完成”);
});
当我将RequestTimeout设置为Integer.MAX\u VALUE时,请求在120秒后不会超时。但是,它可能会在大约25天后超时请求


如何将超时设置为无限长?

假设您正在使用AhcWSClient

val client = AhcWSClient()
然后你就可以

client.url("www.streamingurl.com")
.withMethod("GET")
.withRequestTimeout(Duration.Inf)
.stream()

似乎是这个问题:。尽管在那里,他们声称版本2.5解决了这个问题。但是,当我将调用更改为
.setRequestTimeout(-1).get()
而不是
stream()
时,请求在120秒后不会超时。因此,这可能是相关的,但不是实际报告的问题。但是,
get()
无法帮助我处理服务器发送的事件和akka流。谢谢你,克里斯。我将提交一份bug报告。嗯,我错过了流媒体部分。您正在发布scala代码,我的问题是java API。