2017-06-16 3 views
1

Frühling Batch-Job läuft bis zum Abschluss erfolgreich mit folgendem Code:Frühling Job Antwort auf Client-

@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)); 
    } 
} 

ich JavaFX Client bin mit dem der Endpunkt verwendet wird Anforderung für den Job zu senden ins Leben gerufen werden. Grundsätzlich mit Hilfe von Jersey-Client HTTP-Anforderung wie so geschickt

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

Das Problem ist, ich habe keine Möglichkeit für die Kunden zu wissen, wann der Auftrag abgeschlossen ist. Wie kann Client vom Server benachrichtigt werden, wenn der Auftrag erledigt ist

Jede Hilfe wird sehr geschätzt.

+0

Haben Sie jms für Ihre Anwendung versucht? –

+0

Sie können eine einfache E-Mail senden oder können JMS in Ihrem Code implementieren, oder Sie können Firebase verwenden –

+0

Vergessen Sie nicht zu akzeptieren/upvote die Antwort, wenn es Ihnen geholfen hat ... – Cepr0

Antwort

0

Dies ist eher eine architektonische Frage als Codierung. Sie können dies durch mehrere Wege lösen, werde ich Ihnen vorschlagen, unter drei

  1. Simplest -> Wenn Ihre Aufträge nicht lange dauern - Ihr Kunde für das Ergebnis der Arbeit warten lassen. Senden Sie ihnen den endgültigen Status als Antwort zurück.
  2. Senden Sie die Auftragsreferenznummer sofort an den Client und führen Sie einen anderen Endpunkt ein, an dem der Client die Referenznummer überprüfen kann, wenn Aufträge ausgeführt wurden. Dies bedeutet, dass Ihr Client über einen Abrufmechanismus verfügt.
  3. Verwendung so etwas wie Server Sent Events/Websockets - Dank cerp0
0

Wie kann Client nach Server benachrichtigt, wenn Arbeit erledigt ist?

Versuchen Sie Websokets zu verwenden, um Daten vom Server zum Client zu senden. Here ist eine ziemlich gute Anleitung, wie man es mit Spring macht.

Auf der Client-Seite ich Sie glauben, diesen Ansatz verwenden: https://github.com/nickebbutt/stomp-websockets-java-client

Verwandte Themen