Ich versuche, einige Daten aus einer CSV-Datei in eine saubere Datenbankinstanz zu laden. Dazu habe ich einen ETL-Prozess mit Apache Camel erstellt, liest die Eingabe-CSV, teilt die Datei in mehrere Zeilen auf und verarbeitet jede Zeile parallel mit einer Transaktion pro Zeile.TransactionManagerException: Transaktion ist für diesen Thread nicht aktuell
Klasse ImportRouteBuilder erweitert RouteBuilder {
private final Importer importer
private final String endpoint
public ImportRouteBuilder(Importer importer, String endpoint) {
this.endpoint = endpoint
this.importer = importer
}
@Override
void configure() throws Exception {
from(endpoint)
.unmarshal(buildCsvDataFormat())
.split(body())
.parallelProcessing()
.bean(importer)
}
private static CsvDataFormat buildCsvDataFormat() {
CsvDataFormat csv = new CsvDataFormat();
csv.skipHeaderRecord = true
csv
}
}
@Slf4j
@Service
class CountryCsvImporter implements Importer {
@Autowired
private CountryRepository countryRepository
@Autowired
private Session session
@Override
void process(List record) {
Transaction tx = session.beginTransaction();
try {
importCountry(record)
tx.commit()
}catch (Throwable t) {
tx.rollback()
}
tx.close()
}
ich dies, weil nicht geladen wurde CSV Chiffre oder Neo4j Import-Tool zu verwenden, während mein Modell entwickelt haben gesucht nach wie vor, da es sehr praktisch, OGM beim Prototyping zu verwenden. Aber jetzt habe ich eine Wand in der Mitte des Prozesses gefunden OGM generiert diese TransactionManagerException, es sieht aus wie es war ein Threading-Problem Transaktionen zu verwalten.
bei com.cartrawler.service.CountryImportSpecification.Should der Lage sein Land csv zu importieren (CountryImportSpecification.groovy: 9) Verursacht durch: org.neo4j.ogm.exception.TransactionManagerException: Transaktion ist nicht aktuell für diesen Thread bei org.neo4j.ogm.session.transaction.DefaultTransactionManager.rollback (DefaultTransactionManager.java:78) bei org.neo4j.ogm.transaction.AbstractTransaction.rollback (AbstractTransaction.java:65) bei org.neo4j. ogm.drivers.embedded.transaction.EmbeddedTransaction.rollback (EmbeddedTransaction.java:60) bei com.cartrawler.service.CountryCsvImporter.process (CountryCsvImpo rter.groovy: 28)
Danke, freundlich Luis Oscar
Ich habe versucht, die Formatierung Ihrer Frage zweimal zu korrigieren, nur um es einfacher zu lesen, aber Sie ändern es immer wieder zurück. Wenn Sie es selbst beheben möchten, erfahren Sie, wie Sie Ihren Code und Stacktraces einrücken (http://meta.stackexchange.com/questions/22186/how-doi-i-format-my-code-blocks). – cybersam