Protobuf
JVM since1.0.0 Native since1.5.0
Serialize and deserialize Java objects using Google’s Protocol buffers.
Maven coordinates
Or add the coordinates to your existing project:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-protobuf</artifactId>
</dependency> Check the User guide for more information about writing Camel Quarkus applications.
Additional Camel Quarkus configuration
Generate classes from protobuf .proto files
Use the generate-code goal of quarkus-maven-plugin to generate Java classes from your *.proto service and message definitions stored in the src/main/proto directory:
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate-code</goal>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build> The camel-quarkus-protobuf integration test is a good way to learn more.
Serialize/Deserialize Java beans using JSON fields representation
Please note that some additional configurations might be needed when using contentTypeFormat=json. Indeed, in such a case, the generated Builder class needs to be registered for reflection.
For instance, let’s examine the ProtobufDataFormat below:
ProtobufDataFormat protobufJsonDataFormat = new ProtobufDataFormat(Person.getDefaultInstance(), ProtobufDataFormat.CONTENT_TYPE_FORMAT_JSON); In such a case, the Person.Builder class should be registered for reflection, for instance as below:
@RegisterForReflection(targets = { org.apache.camel.quarkus.component.protobuf.it.model.AddressBookProtos.Person.Builder.class }) A concrete implementation of such a scenario is present in the camel-quarkus-protobuf integration test.