| [[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[] |