Apache Camel
# Apache Camel

Apache Camel ist eine freie, regelbasierte Routing- und Konvertierungsengine. Mit Apache Camel kann man Routing- und Konvertierungsregeln deklarativ in Java oder Scala basierend auf einer domänenspezifischen Sprache, oder mittels Spring basierter XML-Konfiguration definieren.

## Funktionsweise

Apache Camel basiert auf Enterprise Integration Patterns. Das sind Entwurfsmuster, die für den Entwurf von Enterprise Application Integration und auf Message Oriented Middleware basierenden Systemen geschaffen wurden. Apache Camels Bean Binding unterstützt dabei Plain Old Java Objects und JavaBeans. Dadurch kann es einfach in Frameworks mit Dependency Injection wie Spring oder Google Guice integriert werden.

Apache Camel verwendet Uniform Resource Identifiers und kann somit direkt mit unterschiedlichen Transport- und Messageprotokollen wie beispielsweise HTTP, JMS oder AMQP umgehen. Es kann so beispielsweise mit JBI, SCA, Apache ActiveMQ, RabbitMQ, Apache MINA oder Apache CXF zusammenarbeiten. Somit kann basierend auf der Apache-Camel-Programmierschnittstelle gearbeitet werden, obwohl die darüber angesprochenen Komponenten technologisch unterschiedliche Schnittstellen verwenden.

Apache Camel wird häufig zusammen mit Apache ServiceMix (Enterprise Service Bus), Apache CXF (Web Service Framework) und Apache ActiveMQ (Java Message Service Provider) in SOA-Infrastruktur-Projekten eingesetzt. Darüber hinaus wird oft auch Apache MINA (Framework für Netzwerkapplikationen) zusammen mit Apache Camel verwendet.

## Weitere Infos

* Enterprise Application Integration (EAI)
* Enterprise Service Bus (ESB)
* Message Oriented Middleware (MOM)
* Serviceorientierte Architektur (SOA)
