私の設定で2つのjdbcセクションを作成しましたが、常に最初のactionAとactionBを実行したいので、それは私のために重要です。これどうやってするの?ここでLogstashの順次スレッド実行フロー
は私の設定です:事前に
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" { }
}
おかげ
ジェイ
それは良い変種で、私はそれについて考えました。しかし何らかの理由でSELECTに時間がかかりますか?このソリューションはどれくらい安全ですか? actionAの実行を待つことは可能でしょうか? – Frank
両方のアクション間でいつでもデルタを増やすことができます。あなたはどれくらいの頻度で実行する必要がありますか? – Val
私は毎時間それを実行する必要があります。しかし、私はactionBの後に常にactionAが行われるという保証はないので、エンタープライズソリューションではないと思います。実際、ほとんどの場合、actionAは非常に高速に動作します。アクションBのための10分。最高の解決策は、actionAの終了を待ってからactionBを開始し、CRONEの助けを借りてこのスクリプトを開始するスクリプトを書くことだと思います。 – Frank