Java 服务器站点异步处理请求时如何实现同步通信
当服务器站点异步处理请求时,如何实现同步通信 我的意思是客户站点如何处理这种通信模式 发送IQ消息时,XMPP消息协议中处理的类似通信 IQ消息是在后端站点异步处理的,换句话说,当请求进入服务器时,在响应从可用通道发送回来之后,请求对其进行处理Java 服务器站点异步处理请求时如何实现同步通信,java,asynchronous,Java,Asynchronous,当服务器站点异步处理请求时,如何实现同步通信 我的意思是客户站点如何处理这种通信模式 发送IQ消息时,XMPP消息协议中处理的类似通信 IQ消息是在后端站点异步处理的,换句话说,当请求进入服务器时,在响应从可用通道发送回来之后,请求对其进行处理 客户端站点等待响应,就好像通信就像http rest调用一样,您可以查看延迟结果或新的java 8CompletableFuture 在春天,代码看起来像这样: @RequestMapping(path = "/test", method = Reque
客户端站点等待响应,就好像通信就像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+)进行了更新。你可以根据你的客户意愿使用承诺或观察。如果这不是你的意思,也许你可以分享更多的信息。(一些代码片段)对于客户端,服务器是同步工作还是异步工作并没有区别。客户端只发送请求并接收回复。任何服务器在收到请求后都会严格地发送应答,即所有服务器的行为都是相同的。