2017-10-30 3 views
0

ich hame Apache Camel Route wie folgt definiert:Parallel-Prozess in Apache Camel

from("timer:name?period=3000&fixedRate=true") 
      .process(myDbProcessor); 

myDbProcessor implementiert Prozessor-Schnittstelle. Es erhält einfach einige Daten von db und führt HTTP-Post-Anfrage aus. Alles gut, aber manchmal haben wir viele Daten in DB und wir müssen neue Instanz der Anwendung starten, um unsere Leistung zu verbessern.

So möchte ich MyDbProcessor parallel arbeiten in verschiedenen Threads. Ich brauche einen Rat, was ist der beste und einfachste Weg, Multithreading und parallel myDbProcessor zu verwenden?

Antwort

0

Sie können beispielsweise multicast mit parallelProcessing=true und eine benutzerdefinierte onPrepareRef verwenden, um die Arbeitslast zu teilen. Multicast zur selben Zielroute.

Wie auch immer, Sie sollten Ihren Code zuerst umgestalten. Camel ist nicht zur Verwendung mit God Objects vorgesehen, sondern mit pipelines. Jeder Schritt Ihrer Verarbeitung (z. B. starten, Daten abrufen, HTTP-Post durchführen, Ergebnis verarbeiten, zum nächsten Datensatz wechseln) sollte in einem eigenen Prozessor oder einer eigenen Route implementiert werden. Sie können eine bessere Modularität erreichen und alle EIP patterns nutzen.