2017-09-20 4 views
1

Ich habe einen Stream-Listener zu einem Kaninchen mq hören und Einfügen/Update-Operationen basierend auf der Eingabe msg und beharrt es auf eine zugrunde liegende Db2-Datenbank. Die Datenbank hat eine wöchentliche Ausfallzeit von 6 Stunden. Wie plane ich, dass der Listener während dieses Zeitrahmens nicht ausgeführt wird, damit ich die Eingabe-Nachricht nicht verliere. Denken Sie daran, dass diese Nachricht von einem Upstream in der Kaninchenwarteschlange in einem asynchronen Kontext gesendet wird, so dass ich nach der Ausfallzeit nicht nach Upstream fragen kann.Planung Spring Stream Listener zu vermeiden Ausfallzeiten

@StreamListener(target = Sink.INPUT) 
public void testListener(byte[] msg) 
{ 
    System.out.println(new String(msg)); 
    try{ 
     int count = zoneInsert(mapper.readValue(msg, OrderDTO.class)); 
     System.out.println("inserted "+count+" row"); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

Antwort

2

Gerade jetzt, nicht viel. Wir fügen Unterstützung für die Lifecycle-Kontrolle in 2.0 hinzu. Zwei Hacks dafür wären: 1. Stoppen Sie Ihre Überwachung Anwendung (wenn möglich) 2. Umleiten von Fehlermeldungen an eine DLQ und planen Sie eine DLQ-App zu starten direkt nach der DB wieder zum Leben

Verwandte Themen