Ich verwende Camel für die Integration von Spring Boot-Anwendung mit anderen Domänen. Ich habe einen einfachen Weg zum Abfragen mit SQL-Komponente konfiguriert und Aktualisierung der DB:So starten Sie die Transaktion in Camel sql Consumer und verwenden Sie es weiter
from("sql:"+selectSQL+"?consumer.delay=20000&onConsume="+updateSQL)
.log("---select sql done")
.to("sql:" + insertSQL);
und SQLs wie diese sind:
String selectSQL = "SELECT * FROM T1 WHERE PROCESSED is null and ROWNUM <4 for update skip locked";
String updateSQL = "update T1 set PROCESSED='TRUE' where id = :#id";
String insertSQL = "insert into T2 (col_name...) values (col_value...)";
Und ich würde diese SQLs gerne innerhalb 1 Transaktion für einzelne Abfrage ausführen anfordern. Ich weiß, dass ich mit .transacted("propagationPolicy")
Route tätigen kann, aber ich kann es nicht vor from
setzen.
Ist es möglich, jeden Abrufversuch transaktional zu machen?
PS. Ich habe einen Workaround mit Timer-Komponente und separate Route für jeden SQL aber ich frage mich, ist es möglich, mein Problem zu lösen, indem ich nur 1 Route wie oben benutze.