2017-05-13 3 views
0

ich habe ein Problem mit Feder Methode Spiel, die beginnen, wenn ich mein Projekt eingesetzt, so war ich wonding, wenn es eine Methode ist, dass die geplante Aufgabe nach BenutzerauthentifizierungConfig Frühling geplanten Aufgabe nach Benutzerauthentifizierung starten

@Scheduled(initialDelay=10000, fixedRate = 5000) 
    public void sendGpsData() throws Exception { 
     System.out.println("sendGpsData"); 
     this.template.convertAndSend("/gps-data/send", new Greeting("Ahmed WAFDI")); 
    } 
beginnen

Beachten Sie, dass ich Socket verwende, um Daten alle 5 Sekunden zu senden.

Antwort

2

Sie können den Job dynamisch planen, wenn der Benutzer sich authentifiziert. Irgendwo in Ihrer Handhabung der Benutzerauthentifizierung würden Sie die Planung beginnen. Entfernen Sie die @Scheduled Anmerkung aus Ihrem sendGpsData Methode, und dann, wenn sich der Benutzer tun:

TaskScheduler scheduler = // injected by spring; 
ScheduledFuture scheduledFuture = scheduler.schedule(() -> sendGpsData(), new PeriodicTrigger(5000)); 

// You can later unschedule the job if you'd like to by doing 
scheduledFuture.cancel(true); 
+0

an Buchse danke es jetzt @ Brian arbeiten, aber ich bin nicht mehr Empfangen von Daten aus der Steckdose –

0

so will ich meine Lösung teilen, aber bevor hier einige Details über das Problem, das ich konfrontiert habe, habe ich eine Karte dass ich möchte gps alle 2 Sekunden senden coordiante so i Feder websocket verwendet für das in meinem Controller i wie @ Brian Ecker

sagte injiziert
@Autowired 
private TaskScheduler scheduler; 
@Autowired 
private SimpMessagingTemplate template; 

und int Methode, die die Karte i zeigen die geplante Aufgabe

gestartet

und hier ist die Methode, die Daten senden

public void sendGpsData(User user) { 
     System.out.println(user.getUsername()); 
     this.template.convertAndSendToUser(user.getUsername(), "/gps-data/send", user); 
    } 
Verwandte Themen