2017-06-16 57 views
1

春季批处理作业运行完成成功地与下面的代码:春季招聘响应客户

@RestController 
@RequestMapping(value = "api/jobs") 
public class JobLaunchingController { 
    @Autowired 
    private JobOperator jobOperator; 

    @RequestMapping(value = "/pay/{paymentPeriod}", method = RequestMethod.POST) 
    @ResponseStatus(HttpStatus.ACCEPTED) 
    public void launchPaymentJob(@PathVariable Integer paymentPeriod) throws Exception { 
     this.jobOperator.start("paymentJob", String.format("paymentPeriod=%s,time=" + System.currentTimeMillis(), paymentPeriod)); 
    } 
} 

我使用JavaFX客户端点被用于为作业发送请求被启动。基本上,Jersey客户端的HTTP请求的帮助下被送到像这样

Client client = ClientBuilder.newBuilder().build(); 
WebTarget webTarget = client.target(getBaseUri()).path(path); 
Response response = webTarget.request().get(Response.class); 

问题是我没有办法让客户知道作业完成时。当作业完成后,客户如何通过服务器通知

任何帮助都非常感谢。

+0

你已经尝试了您的应用程序的JMS? –

+0

你可以发送一个简单的电子邮件,或者可以在你的代码中实现jms,或者你可以使用firebase –

+0

如果它帮助你,请不要忘记接受/提出答案...... – Cepr0

回答

0

这是一个比编码更多的架构问题。您可以通过多种方式解决这个问题,我会建议你下面的第三

  1. 最简单的 - >如果你的工作并不需要很长时间 - 让你的客户等待作业的结果。发回他们的最终状态作为回应。
  2. 立即向客户端发送作业参考号,并引入另一个端点,客户端可以通过参考号检查是否完成作业 - 这涉及到您的客户端具有某种轮询机制。
  3. 使用类似服务器发送活动/的WebSockets - 感谢cerp0