Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务器站点异步处理请求时如何实现同步通信_Java_Asynchronous - Fatal编程技术网

Java 服务器站点异步处理请求时如何实现同步通信

Java 服务器站点异步处理请求时如何实现同步通信,java,asynchronous,Java,Asynchronous,当服务器站点异步处理请求时,如何实现同步通信 我的意思是客户站点如何处理这种通信模式 发送IQ消息时,XMPP消息协议中处理的类似通信 IQ消息是在后端站点异步处理的,换句话说,当请求进入服务器时,在响应从可用通道发送回来之后,请求对其进行处理 客户端站点等待响应,就好像通信就像http rest调用一样,您可以查看延迟结果或新的java 8CompletableFuture 在春天,代码看起来像这样: @RequestMapping(path = "/test", method = Reque

当服务器站点异步处理请求时,如何实现同步通信

我的意思是客户站点如何处理这种通信模式

发送IQ消息时,XMPP消息协议中处理的类似通信

IQ消息是在后端站点异步处理的,换句话说,当请求进入服务器时,在响应从可用通道发送回来之后,请求对其进行处理


客户端站点等待响应,就好像通信就像http rest调用一样,您可以查看延迟结果或新的java 8CompletableFuture

在春天,代码看起来像这样:

@RequestMapping(path = "/test", method = RequestMethod.GET)
public CompletableFuture<String> getAsyncTest() {
    return CompletableFuture.supplyAsync(this::processReq);
}

private String processReq() {
    log.info("Dummy work");
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    return "test";
}
@RequestMapping(path=“/test”,method=RequestMethod.GET)
公共CompletableFuture getAsyncTest(){
返回CompletableFuture.supplyAsync(this::processReq);
}
私有字符串processReq(){
日志信息(“虚拟工作”);
试一试{
《睡眠》(2000年);
}捕捉(中断异常e){
e、 printStackTrace();
}
返回“测试”;
}
以下是关于这个主题的一篇好文章:

[客户端示例] 您可以将RXJS与可观察对象一起使用:

getTest().subscribe((response) => {
        // Do something on success
    }, (error) => {
        console.error(error);
    });

getTest(): Observable<any> {
    return this.http.get<>('/test');
}
getTest().subscribe((响应)=>{
//为成功做点什么
},(错误)=>{
控制台错误(error);
});
getTest():可观察{
返回这个.http.get('/test');
}

这是用于服务器站点实现的,我需要客户端站点,当我检查测试用例时,它正常工作,同步方法callI使用客户端示例(Angular 6+)进行了更新。你可以根据你的客户意愿使用承诺或观察。如果这不是你的意思,也许你可以分享更多的信息。(一些代码片段)对于客户端,服务器是同步工作还是异步工作并没有区别。客户端只发送请求并接收回复。任何服务器在收到请求后都会严格地发送应答,即所有服务器的行为都是相同的。