Ich habe zwei jdbc Abschnitte in meiner Konfig gemacht, aber ich möchte immer zuerst actionA und dann actionB ausführen, es ist wichtig für mich. Wie kann ich das machen?Logstash sequentielle Thread-Ausführung Fluss
Hier ist meine config:
input {
jdbc {
type => "actionA"
jdbc_validate_connection => true
jdbc_connection_string => "jdbc:oracle:thin:@mycomp:1522/db1"
...
statement => "SELECT ID FROM my_table WHERE delete='Y'"
}
jdbc {
type => "actionB"
jdbc_validate_connection => true
jdbc_connection_string => "jdbc:oracle:thin:@mycomp:1522/db1"
...
statement => "UPDATE my_table SET delete='T' WHERE delete='Y'"
}
}
output {
stdout { codec => rubydebug }
if [type] == "actionA" {
elasticsearch {
action => "delete"
index => "contacts"
document_type => "contact"
document_id => "%{id}"
hosts => ["http://localhost:9200"]
}
}
if [type] == "actionB" { }
}
Vielen Dank im Voraus
Jay
Es ist eine gute Variante und ich habe darüber nachgedacht. Aber wenn SELECT aus irgendeinem Grund mehr Zeit braucht? Wie sicher ist diese Lösung? Vielleicht ist es möglich, auf die Ausführung der Aktion A zu warten? – Frank
Sie können das Delta zwischen beiden Aktionen immer erhöhen. Wie oft brauchst du sie sowieso? – Val
Ich muss es jede Stunde laufen. Aber ich denke, es ist keine Unternehmenslösung, weil es keine Garantie dafür gibt, dass actionB immer nach actionA durchgeführt wird. Tatsächlich wird actionA in den meisten Situationen sehr schnell laufen und es ist keine gute Idee, z.B. 10 Minuten für ActionB. Ich denke, die beste Lösung wird ein Skript sein, das auf die Beendigung von actionA wartet und dann actionB startet und dieses Skript mit Hilfe von CRONE startet. – Frank