2016-04-11 19 views
1

Ich möchte eine kopflose Anwendung erstellen, die die Datenbank in Endlosschleife abfragen und einige Operationen unter bestimmten Bedingungen ausführen (z. B. Datensätze mit bestimmten Werten abrufen und wenn gefunden E-Mail-Sendeprozedur für jede Nachricht starten).Spring Boot - Endlosschleife Dienst

Ich möchte Spring Boot als Basis verwenden (vor allem wegen Actuator zu erlauben, Health-Checks zu ermöglichen), aber jetzt habe ich Spring Boot für den Aufbau von REST-Web-Services verwendet.

Gibt es Best Practices oder Muster, die beim Erstellen von Endlosschleifenanwendungen zu beachten sind? Hat jemand versucht, es basierend auf Spring Boot zu bauen und kann mit mir seine Architektur für diesen Fall teilen?

Mit freundlichen Grüßen.

Antwort

4

Was ich verwende ist ein Nachrichtenbroker und ein Verbraucher in der Spring-Boot-Anwendung, um die Aufgabe zu erledigen.

+0

Sie bedeutet, dass Sie die Spring-Integration verwenden, um einen Kanal zu erstellen, um die Datenbank abzufragen, und wenn dann etwas gefunden wird, führt Ihr Consumer eine Logik bei gefundenen Zeilen aus? –

+0

Danke für Ihren Hinweis. Ich habe endlich Spring Integration + Spring Boot verwendet. Ich habe JDBC Inbound Channel Adapter verwendet, um die Datenbank zusammenzulegen, und meinen eigenen ServiceActivator geschrieben, um auf gefundene Zeilen zu reagieren. Arbeite wie ein Zauber mit etwas Code. –

7

Implementieren Sie keine Endlosschleife selbst. Lassen Sie den Rahmen verarbeiten sie ihre task execution Fähigkeiten mit:

@Service 
public class RecordChecker{ 

    //Executes each 500 ms 
    @Scheduled(fixedRate=500) 
    public void checkRecords() { 
     //Check states and send mails 
    } 
} 

Vergessen Sie nicht, Terminplanung für Ihre Anwendung zu aktivieren:

@SpringBootApplication 
@EnableScheduling 
public class Application { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class); 
    } 
} 

Siehe auch: