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
Camel Main
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.
A new camel-test-main
module added to make it easier to unit test Camel Main based applications.
Camel JBang
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.
The 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 camel-kotlin-dsl
JAR.
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
The 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!"
Component Headers
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.
Camel Kafka
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.
Quarkus
The upcoming Camel Quarkus 2.8 release will be upgraded to Camel 3.16.
Spring Boot
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.
Upgrading
Make sure to read the upgrade guide if you are upgrading from a previous Camel version.
Release Notes
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. ↩︎