Apache Camel 3.16 has just been released.
This release introduces a set of new features and noticeable improvements that we will cover in this blog post.
Resume from Offset
This release brings a new API to simplify consuming data at scale: the resume API V2. Please check the blog post we wrote to introduce it to our community.
Load properties from valut/secrets cloud services
This release brings a new feature: the ability to retrieve properties values from a Vault/Secrets cloud services. We are currently supporting AWS Secret manager service and Google Secret Manager, but we are planning to add more.
See more details at the following blog post
We added base package scanning support when running a Camel Main application, that makes it easier to auto-discover Camel routes, configuration classes, type converters, and other classes using dependency injections.
camel-test-main module added to make it easier to unit test Camel Main based applications.
We continue to innovate and make running Camel quickly and easily with JBang better and better. Now
camel-jbang supports reloading
.properties files in reload mode.
We also added support for loading
.java source containing custom POJOs, processors, or type-converters which can be reloaded. This allows users to modify the source code, and let
camel-jbang hot re-load changes.
camel-jbang now also supports Camel K modeline configurations, and other parts from Camel K & Kamelets, that makes camel-jbang more on-par with Camel K and makes it possible to run many more Camel K files out-of-the-box.
And we also made
camel-jbang auto download DSLs, so for example It’s possible to run a kotlin source file and automatic download the needed
A preliminary support for using dependency injection annotations from Spring, Quarkus, and CDI has been added, which bridges the gap between camel-jbang and using Camel K, Camel Spring Boot, or Camel Quarkus. The intention is to allow getting started with building Camel integrations using
camel-jbang / Camel Karavan and then later transition to a regular Camel on Spring Boot or Quarkus project. We will continue working on this story for upcoming releases.
See more details at the Camel JBang documentation
Camel UI Designer
The Camel Karavan project is progressing nicely, and during the development we have identified a number of mistakes in the route model in Camel that has been improved and corrected.
This overall makes it easier to build custom Camel tooling as there are less model hacks you may need to implement in the tool.
The changes to the model may affect users when upgrading, so make sure to read the upgrade guide.
Camel Health Checks
camel-health has been overhauled to be made simpler to implement custom health-checks.
Camel Route Templates
The XML, Spring XML, Java and YAML DSL now also support creating routes from route templates.
Assuming that you have a simple route template whose id is
someTemplate with one template parameter
message, according to the DSL of your choice, you can create a new route from this template as next:
In Java DSL
templatedRoute("someTemplate") .parameter("message", "Hello Camel templated route!");
In Spring XML DSL
<camelContext> <templatedRoute routeTemplateRef="someTemplate"> <parameter name="message" value="Hello Camel templated route!"/> </templatedRoute> </camelContext>
In XML DSL
<templatedRoutes xmlns="http://camel.apache.org/schema/spring"> <templatedRoute routeTemplateRef="someTemplate"> <parameter name="message" value="Hello Camel templated route!"/> </templatedRoute> </templatedRoutes>
In YAML DSL
- templated-route: route-template-ref: "someTemplate" parameters: - name: "message" value: "Hello Camel templated route!"
Most of the components produce or consume headers so like endpoints’ options, it was important to provide some tooling to generate the documentation of the headers in a standardized way.
For this, we added a new element called
headersClass to the annotation
@UriEndpoint in order to provide the class that holds all the name of headers as
String constants. Generally, it is the class whose name is of type xxxConstants where xxx is the name of the corresponding component like for example
FtpConstants for the component camel-ftp.
Then, in the headers class, each constant defining the name of a header, is then annotated with
@Metadata to provide its documentation like for the options.
We started 1 marking up all headers in every component for automatic generation of documentation, but also to expose the metadata of the headers to external tools.
We added specific health-checks for kafka producer and consumers that checks the kafka-client internals if the connectivity with the kafka brokers is healthy or not.
We did other bug fixes, and we continue to make the camel-kafka component more robust. In this release we fixed offset management issues. Please check the release notes for details.
The upcoming Camel Quarkus 2.8 release will be upgraded to Camel 3.16.
We have upgraded to the latest Spring Boot 2.6 release.
Added more unit tests to various starter JARs to increase the QA of this project.
Deprecated Components: Camel Testcontainers
In this release we are replacing the camel-testcontainers components with the camel-test-infra. These new set of test-related components simplify integration testing with Camel, allow us to test edge case scenarios more easily, reduce our maintenance effort and more. Please check the blog post where we explained about the changes.
Make sure to read the upgrade guide if you are upgrading from a previous Camel version.
You can find more information about this release in the with a list of JIRA tickets resolved in the release:
- For now, only the headers of components whose name starts with A to G have been documented. [return]