Zip Deflate Compression
Since Camel 2.12
The Zip Deflater Data Format is a message compression and de-compression format. Messages marshalled using Zip compression can be unmarshalled using Zip decompression just prior to being consumed at the endpoint. The compression capability is quite useful when you deal with large XML and Text based payloads. It facilitates more optimal use of network bandwidth while incurring a small cost in order to compress and decompress payloads at the endpoint.
This dataformat is not for working with zip files such as uncompressing and building zip files. Instead use the zipfile dataformat. |
Options
The Zip Deflate Compression dataformat supports 2 options, which are listed below.
Name | Default | Java Type | Description |
---|---|---|---|
compressionLevel |
|
|
To specify a specific compression between 0-9. -1 is default compression, 0 is no compression, and 9 is best compression. |
contentTypeHeader |
|
|
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. |
Marshal
In this example we marshal a regular text/XML payload to a compressed
payload employing zip compression Deflater.BEST_COMPRESSION
and send
it an ActiveMQ queue called MY_QUEUE.
from("direct:start").marshal().zipDeflater(Deflater.BEST_COMPRESSION).to("activemq:queue:MY_QUEUE");
Alternatively if you would like to use the default setting you could send it as
from("direct:start").marshal().zipDeflater().to("activemq:queue:MY_QUEUE");
Unmarshal
In this example we unmarshal a zipped payload from an ActiveMQ queue called MY_QUEUE to its original format, and forward it for processing to the UnZippedMessageProcessor. Note that the compression Level employed during the marshalling should be identical to the one employed during unmarshalling to avoid errors.
from("activemq:queue:MY_QUEUE").unmarshal().zipDeflater().process(new UnZippedMessageProcessor());
Spring Boot Auto-Configuration
When using zip-deflater with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-zip-deflater-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
The component supports 5 options, which are listed below.
Name | Description | Default | Type |
---|---|---|---|
camel.dataformat.gzipdeflater.content-type-header |
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. |
false |
Boolean |
camel.dataformat.gzipdeflater.enabled |
Whether to enable auto configuration of the gzipdeflater data format. This is enabled by default. |
Boolean |
|
camel.dataformat.zipdeflater.compression-level |
To specify a specific compression between 0-9. -1 is default compression, 0 is no compression, and 9 is best compression. |
-1 |
Integer |
camel.dataformat.zipdeflater.content-type-header |
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. |
false |
Boolean |
camel.dataformat.zipdeflater.enabled |
Whether to enable auto configuration of the zipdeflater data format. This is enabled by default. |
Boolean |