Apache camel shared datasource

Wie kann man in Apache camel eine gemeisame HSQLDB Datenbank einrichten und in alle Routen nutzen?
Die Datenbank Connection Pooling System HikariCP wird benutzt.
Sie benötigen folgende Bündel:

  • camel-blueprint
  • camel-stream
  • camel-csv
  • camel-sql

Die Route für CSV Datei mit Pipe „|“ Trennzeichen:

Java 8. Dateiinhalt einlesen

Es gibt genug Beispile dafür, aber nicht alle sind richtig.
Eine übliche Variante wäre

 Die Variante liefert aber unterschiedliche Inhalte bei verschiedenen lokalen im Betriebssystem. 

Also legen Sie bei String<->Byte[] Umwandlungen immer einen Charset fest:

Directory stream mit Java 8 lambda

Klein Beispiel wie man die 100 neueste Textdateien im Verzeichniss lässt und alle übrige mit der Hilfe von Java 8 lambda löschen kann.

Problem des Handlungsreisenden und Java Fork/Join Framework

Das  „Problem des Handlungsreisenden“  ist ein NP-äquivalentes Problem. Die Umsetzung mit Hilfe des Java Fork/Join Frameworks enthält die  Nearest-Neighbor-Heuristik. Das Ziel ist so schnell wie möglich eine Lösung zu liefern. Aber je mehr Zeit der Algorythmus dafür bekommt, desto optimaler bzw. kürzer wird die gefundene Lösung  sein.

Die Information über Punkte (analog Städte) wird im TSPPoint Objekt gekapselt. Der erste Punkt ist der Start.
Zuerst wird die Entfernungsmatrix berechnet:

CostX und CostY – sind das Achsengewicht.

Z.B.: maximale Achsengeschwindigkeit des Roboters.

Eine Kante wird durch die Klasse TSPAction berechnet. Die rekursive Funktion liefert kein Ergebnis, weswegen TSPAction die Klasse RecursiveAction erbt. Man muss nur die Funktion TSPAction.compute() implementieren, die für die ganze Logik und Heuristik verantwortlich ist.

Heuristik beinhaltet:

  • die Funktion getNextNearestPoint wählt die minimalgewichtete, benachbarte Kante zum nächsten freien Knoten (localFreePoints Liste)
  • in Zeilen 19-23 wird zuerst der Pfad mit dem Minimalgewicht gesucht. Damit werden alle längeren Pfade weggeworfen (Zeile 4-7)

 Quellcode herunterladen

Und so sieht es im Echtleben aus: