LevelDB

JVM since1.2.0 Native since1.2.0

Using LevelDB as persistent EIP store

What’s inside

Please refer to the above link for usage and configuration details.

Maven coordinates

Create a new project code.quarkus.io camel%E2%80%92quarkus%E2%80%92leveldb blue

Or add the coordinates to your existing project:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-leveldb</artifactId>
</dependency>

Check the User guide for more information about writing Camel Quarkus applications.

Camel Quarkus limitations

In native mode the extension uses a port of LevelDB written in Java (documentation), which is within 10% of the performance of the C++ original. Please upvote this issue if you do not like the present state.

Serialization is not supported on GraalVM. Extension has to use serializationization based on Jackson. Aggregation repository in native has to be constructed in one of the following ways:

  • Use class QuarkusLevelDBAggregationRepository instead of LevelDBAggregationRepository.

  • Configure jackson serializer on LevelDBAggregationRepository by calling repo.setSerializer(new JacksonLevelDBSerializer());

Jackson serializer has limitation towards binary content. If payload object contains binary data (does not concern payloads which are completely binary), Jackson serialization and deserialization won’t work correctly. To avoid this, define your own jackson serializer/deserealizer via Module and provide it to the aggragation repository (you can use for example the constructor of QuarkusLevelDBAggregationRepository).