将传入的REST调用保存到可靠的句柄系统故障的最佳方法

时间:2014-12-09 12:53:02

标签: java rest jms reliability

我正在使用Java实现RESTfull Web服务,即使系统崩溃,它也应该以可靠的方式计算每个调用。在潜在的故障之后,系统应该能够找到系统崩溃时打开的所有作业,并继续进行系统崩溃的计算。

实现这项任务的最佳方法是什么? JMS是正确的方向吗?

1 个答案:

答案 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堆栈)上进行分离和监视。