是否有任何库或解决方案 spring 响应需要很长时间的工作
is there any library or solution for spring response with long time needed job
我项目中的一些过程需要几分钟(1~10 分钟)。我使用 spring boot web 提供了这个过程的结果。所以我的 API 必须 return 状态响应 (queueing/running/finished/failed)。所以我做了一些由 ResponseEntity Class.
实现的属性
我的请求流程是
- 用户请求
- javascript 使用参数
调用 API
- server make job using request's attribute(parameter, user information)
- 检查作业是否已经存在。如果不是,则将作业放入队列。如果存在,return 现在的工作状态(完成的工作有过程的结果)。
QueueExecutor 运行将新作业发送给处理组件,然后创建线程定期检查。
- 用户的客户端周期性请求。得到这份工作是 queueing/running/finished 使用 setInterval()。如果没有完成,通过。否则,运行 UI 进程。
在我的流程中,我有很多小问题,所以我想知道是否有任何通用或有用的库或解决方案。请给我建议。谢谢。
我建议使用推送技术比传统的轮询方法更好,more information。
首先你需要在Spring中创建一个消息处理控制器:
@Controller
public class GreetingController {
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
Thread.sleep(1000); // simulated delay
return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!");
}
}
然后为 STOMP 消息配置 Spring:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/gs-guide-websocket").withSockJS();
}
}
在客户端基于哪个 JS-Library 你应该 register/subscribe 消息。
看看这些使用 spring 进行推送的示例:
我项目中的一些过程需要几分钟(1~10 分钟)。我使用 spring boot web 提供了这个过程的结果。所以我的 API 必须 return 状态响应 (queueing/running/finished/failed)。所以我做了一些由 ResponseEntity Class.
实现的属性我的请求流程是
- 用户请求
- javascript 使用参数 调用 API
- server make job using request's attribute(parameter, user information)
- 检查作业是否已经存在。如果不是,则将作业放入队列。如果存在,return 现在的工作状态(完成的工作有过程的结果)。
QueueExecutor 运行将新作业发送给处理组件,然后创建线程定期检查。
- 用户的客户端周期性请求。得到这份工作是 queueing/running/finished 使用 setInterval()。如果没有完成,通过。否则,运行 UI 进程。
在我的流程中,我有很多小问题,所以我想知道是否有任何通用或有用的库或解决方案。请给我建议。谢谢。
我建议使用推送技术比传统的轮询方法更好,more information。
首先你需要在Spring中创建一个消息处理控制器:
@Controller
public class GreetingController {
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
Thread.sleep(1000); // simulated delay
return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!");
}
}
然后为 STOMP 消息配置 Spring:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/gs-guide-websocket").withSockJS();
}
}
在客户端基于哪个 JS-Library 你应该 register/subscribe 消息。
看看这些使用 spring 进行推送的示例: