2017-02-02 2 views
2

In meiner Spring/Hibernate/MVC-Anwendung implementiere ich einige lang laufende Funktionen. In diesem Fall möchte ich den Benutzer über den Status informieren.Spring: Howto zeigen Protokollmeldungen an den Benutzer?

Ich frage mich, wenn ich bestimmte log4j Nachrichten an das Frontend bekommen, wie:

DEBUG d.t.webapp.services.StageServiceImpl - Fetching result 
DEBUG d.t.webapp.services.StageServiceImpl - loaded 1000 rows 
DEBUG d.t.webapp.services.StageServiceImpl - loaded 1000 rows 
DEBUG d.t.webapp.services.StageServiceImpl - loaded 1000 rows 
DEBUG d.t.webapp.services.StageServiceImpl - loaded 994 rows 

Die Mitteilung an den Frontend-Schritt-für-Schritt erscheinen soll, wie sie vom Backend erzeugt werden, mit minimalem verzögern. Ist das möglich oder gibt es bessere Lösungen für diese Anforderung?

Antwort

1

Oder warum nicht einfach so etwas wie folgt verwenden:

1 # erstellen Controller Sie mit dem letzten Status Ihrer Arbeiter jeden 2

@RestController 
@RequestMapping(value = "/worker") 
public WorkerStatusProviderController { 

    @Autowired 
     WorkerStatusProvider workerStatusProvider; 

    @RequestMapping(value = "/status/{id}", method = RequestMethod.GET) 
    public new ResponseEntity<WorkerStatus> getStatus(@PathVariable("id") long workerId){ 

     //retrieve last worker status 
     WorkerStatus lastStatus = workerStatusProvider.getLastStatus(workerId); 

     //send worker status to front 
     return new ResponseEntity<WorkerStatus>(lastStatus, HttpStatus.OK); 
    } 
} 

2 # In Frontend diesen Controller Verwendung von Ajax zu schaffen anrufen oder 3 Sekunden und zeigt Ihrem Benutzer den letzten Status an.

//call /worker/status/id every 2 seconds 
setInterval(function(){ 
    $.get("/worker/status/100", function(workerStatus, status) { 

     //display worker status to the user 
     alert("workerStatus: " + workerStatus); 

    }); 
}, 2000); 
Verwandte Themen