Skip to content

sgargan/camel-avro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Avro component module for Apache Camel.

This component integrates Apache Avro (http://avro.apache.org) with Apache Camel. It wraps Avro's existing efficient IPC mechanisms into Camel Producers and Consumers allowing creation of routes via Camel's powerful routing DSL. Avro's simple and efficient serialization compliments Camel perfectly. Together they a compelling toolset for creating high throughput, flexible Service Oriented and Domain Event-driven Architectures.

Building
---------

The current implementation is built against the 1.5.0-SNAPSHOT of Avro and the 2.7.0-SNAPSHOT version of Camel. Avro 1.5 is about to go gold and as soon as it does I will create a branch for this and migrate to the 1.5.1-SNAPSHOT. You may need to build Avro and Camel in order for this build to resolve correctly. Both are available here on github.

https://github.com/apache/avro.git
https://github.com/apache/camel.git

To build this component,

Checkout the latest version of the code

> git clone [email protected]:sgargan/camel-avro.git
> cd camel-avro

Run maven. 

> mvn clean install 

Usage
------
Like all Camel components, the Avro component uses a specific url prefix in the DSL to invoke the component and create routes; The prefix in this case is 'avro'. Typically when creating a route the next part of the url specifies the transport to be used for example the following DSL snippet will create a consumer that stands up a Netty based Avro server that will forward the payload of each request it receives onto the rest of the route. The format of the payload is defined by an associated Avro protocol that should be passed to the route as a parameter.

from("avro:netty://0.0.0.0:4567/?protocol=orderingService").to("direct:avro-payload-processing")

Any Avro headers in the request can be forwarded as headers in the exchange message by adding 'forwardHeaders=true' as a url parameter.

Most of Avro's transports are available with a notable exception. Due to incompatibilities between the versions of Jetty used by Camel and Hadoop, Avro's http transport has not yet been implemented. You can still use the component via http by fronting it with Camel's Jetty component and an example of this can be found in the unit tests.

I'm working on documentation for the Camel wiki, but in the meantime, the unit tests provide examples of using each of the various transports.

Give it whirl, kick the tires and tell me how it goes for you. All feedback is greatly appreciated.

About

Avro component implementation for Camel

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages