我正在使用Java实现RESTfull Web服务,即使系统崩溃,它也应该以可靠的方式计算每个调用。在潜在的故障之后,系统应该能够找到系统崩溃时打开的所有作业,并继续进行系统崩溃的计算。
实现这项任务的最佳方法是什么? JMS是正确的方向吗?
答案 0 :(得分:0)
您可以尝试使用RestEasy。
在RestEasy中,您可以在执行REST调用之前和之后绑定处理程序。
您可以在before处理程序上存储REST调用,并在完成后确认执行。
如果没有执行REST ......可以重试它,或者重复它的动作。
代码看起来像这样(请求):
@Provider
public class RestInterceptor implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext context) {
(的 RESPONSE 强>)
@Provider
public class EventFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException {
问题出现为什么?
REST调用应该是在不到30秒内执行的简单原子任务。 另外,他们应该(如果可能的话)是幂等的。
如果您想通过REST调用触发和监视长时间运行的任务,那么这就是您要采取的方法。但是作业本身应该在其他级别(而不是HTTP堆栈)上进行分离和监视。