Ich habe einen großen Teil der CSV-Dateien (jeder enthält rund Millionen von Datensätzen). Also verwende ich seda, um die Multi-Threading-Funktion zu verwenden. Ich teile 50000 in Stücke, verarbeite es und erhalte eine Liste von Entitätsobjekten, die ich unter Verwendung von jpa aufteilen und in der DB persistieren möchte. Anfangs bekam ich eine Out of Heap Memory Exception. Aber später verwendete ich ein hohes Konfigurationssystem und Heap-Problem wurde gelöst.Doppelte Werte von CSV werden in DB mit Apache Camel eingefügt
Aber jetzt ist das Problem, ich bekomme doppelte Datensätze in der DB eingefügt. sagen Sie, wenn es 1000000 Datensätze in der CSV gibt, werden etwa 2000000 Datensätze in DB eingefügt. Es gibt keinen Primärschlüssel für die Datensätze in den Csv-Dateien. Also habe ich Hibernate verwendet, um einen Primärschlüssel dafür zu generieren.
Unten ist mein Code (kam-context.xml)
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file:C:\Users\PPP\Desktop\input?noop=true" />
<to uri="seda:StageIt" />
</route>
<route>
<from uri="seda:StageIt?concurrentConsumers=1" />
<split streaming="true">
<tokenize token="\n" group="50000"></tokenize>
<to uri="seda:WriteToFile" />
</split>
</route>
<route>
<from uri="seda:WriteToFile?concurrentConsumers=8" />
<setHeader headerName="CamelFileName">
<simple>${exchangeId}</simple>
</setHeader>
<unmarshal ref="bindyDataformat">
<bindy type="Csv" classType="target.bindy.RealEstate" />
</unmarshal>
<split>
<simple>body</simple>
<to uri="jpa:target.bindy.RealEstate"/>
</split>
</route>
Bitte um Hilfe.
_ „Ist mein Code korrekt“ _ - wir wissen nicht, da Sie keine Informationen darüber zur Verfügung haben, was „richtig“ in Ihrer speziellen Situation ist. –
Hallo Jim, ich spreche von der camel-context.xml. Gibt es einen anderen Code, den du von meiner Seite willst? – Sandy
Bitte posten Sie die Mappings für 'RealEstate'. –