blob: 03c40c176bebbef9d63d3eb24d34e6b8d67ad26c [file] [log] [blame]
[[avro-dataformat]]
= Avro DataFormat
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-avro/src/main/docs/avro-dataformat.adoc
:docTitle: Avro
:artifactId: camel-avro
:description: Serialize and deserialize messages using Apache Avro binary data format.
:since: 2.14
:supportLevel: Stable
*Since Camel {since}*
This component provides a dataformat for avro, which allows
serialization and deserialization of messages using Apache Avro's binary
dataformat. Since Camel 3.2 rpc functionality was moved into separate `camel-avro-rpc` component.
Maven users will need to add the following dependency to their `pom.xml`
for this component:
[source,xml]
------------------------------------------------------------
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-avro</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------
You can easily generate classes from a schema, using maven, ant etc.
More details can be found at the
http://avro.apache.org/docs/current/[Apache Avro documentation].
== Using the Avro data format
Using the avro data format is as easy as specifying that the class that
you want to marshal or unmarshal in your route.
[source,xml]
--------------------------------------------------------------------------------
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:in"/>
<marshal>
<avro instanceClass="org.apache.camel.dataformat.avro.Message"/>
</marshal>
<to uri="log:out"/>
</route>
</camelContext>
--------------------------------------------------------------------------------
An alternative can be to specify the dataformat inside the context and
reference it from your route.
[source,xml]
--------------------------------------------------------------------------------------
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<avro id="avro" instanceClass="org.apache.camel.dataformat.avro.Message"/>
</dataFormats>
<route>
<from uri="direct:in"/>
<marshal><custom ref="avro"/></marshal>
<to uri="log:out"/>
</route>
</camelContext>
--------------------------------------------------------------------------------------
In the same manner you can umarshal using the avro data format.
== Avro Dataformat Options
// dataformat options: START
The Avro dataformat supports 2 options, which are listed below.
[width="100%",cols="2s,1m,1m,6",options="header"]
|===
| Name | Default | Java Type | Description
| instanceClassName | | String | Class name to use for marshal and unmarshalling
| contentTypeHeader | false | Boolean | Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON etc.
|===
// dataformat options: END
ND
include::camel-spring-boot::page$avro-starter.adoc[]