
Apache Camel 4.15 has just been released.
This release introduces a set of new features and noticeable improvements that we will cover in this blog post.
Camel Core
You can now easier extend Camel via 3d-party dependencies via Java ServiceLoader using the ContextServicePlugin
SPI.
You can add custom sensitive keys to camel.main.additionalSensitiveKeywords
which Camel will mask in logging.
Camel JBang
camel debug
now also supports debugging Camel Quarkus applications, by executing camel debug pom.xml
which will detect that it’s a Camel Quarkus Maven project, and then startup Quarkus via mvn quarkus:dev
and attach the Camel route debugger automatically.
The camel get route-dump
now dumps in YAML format by default.
Added IBM MQ to camel infra
which makes it easy to start up a local MQ broker for development purposes.
Camel Groovy
Added the new camel-groovy-xml
data format is a basic data format to transform XML to Groovy Node objects, and back to XML. This is convenient when working with XML and using Groovy for data manipulation.
This data format is limited in functionality but intended to be easier to use. There are none or only a few options to configure.
Camel Spring Boot
camel-spring-boot
is upgraded to the latest Spring Boot 3.5.6 release.
When Spring Boot Actuators and the camel-undertow-starter are used in a project, the undertow metrics are now exposed out of the box under the actuator endpoint.
YAML DSL
It is now possible to inline Maps in the parameters
section. However Camel components rarely have options that are Map based, but when they do this makes it easier to use. For example the plc4j component allow to configure tags as a Map:
- from:
uri: "timer://tick"
parameters:
period: "1s"
steps:
- to:
uri: "plc4j"
parameters:
driver: "some driver url here"
tags:
"tags_2": "XXX"
"tags_6": "YYY"
In this example the tags options is of Map type and can be configured using YAML map syntax. Because the keys use underscore, then they are quoted.
Java 25
We have prepared the code-base for the upcoming Java 25 release. However, this release does not officially support Java 25, but we are not aware of any issues (feedback is welcome). We will work on official Java 25 support in the following releases.
Micrometer Observability implementation of Camel Telemetry
Here a new implementation of the camel-telemetry
component: camel-micrometer-observability
. This component uses the technology offered by Micrometer and is available both trough Main and Spring Boot runtime. This component may result a bit more complicated to configure than other telemetry components: the framework is an abstraction layer, therefore it is expected that the integration developers configure the Registry and the Context Propagation mechanisms adding the concrete technology (Opentelemetry, Brave/Zipkin) of choice.
If you’re using Spring Boot runtime, it will be much more easy as there are dependencies in charge to autoconfigure it. You can read all detailed information in the component page documentation.
Logging MDC (Mapped Diagnostic Context) Service
We have introduced a new component which will make it easier the setting and usage of MDC traces in your applications. We haven’t yet deprecated the older feature, but we’ll likely do in the future. You’re invited to start adopting the new component as soon as possible.
Adding the camel-mdc
component (or related starter in Spring Boot and extension in Quarkus runtimes), you will be able to include traces information you want in the log by just declaring which are the Exchange headers or properties containing such info. This new component will let you include the trace in any DSL (you were kind of forced to do it only in Java before), for example:
- setHeader:
name: "customHead"
constant: "I am an header"
- setProperty:
name: "customProp"
constant: "I am a property"
When activated (camel.mdc.enabled=true
) you will get automatically a series of default MDC parameters and additionally you can add your own (see more configuration detail in the component page). From there onward you can declare the MDC you want to trace in your log according to your logging framework notation. For example, in Log4j it will be:
... [%X{camel.contextId}, %X{camel.routeId}, %X{camel.exchangeId}, %X{camel.messageId}, %X{customHead}, %X{customProp}]
You won’t need any longer to worry about context propagation. Neither the MDC will be interleaved in Camel threads which don’t belong to route processing: consistent and clean.
Miscellaneous
Upgraded many third-party dependencies to the latest releases at the time of release.
The camel-file
used as clustered file-lock (FileLockClusterView
) is now more resilient to split-brain scenarios.
New Components
camel-aws2-textract
- Extract text and data from documents using AWS Textractcamel-aws2-transcribe
- Automatically convert speech to text using AWS Transcribe servicecamel-docling
- Process documents using Docling library for parsing and conversioncamel-groovy-xml
- Transform between XML and Groovy Node (Map structure) objects.camel-langchain4j-embeddingstore
- Provides support for 25+ vector databases using the LangChain4j EmbeddingStore API.camel-keycloak
- Manage Keycloak instances via Admin APIcamel-mdc
- Logging MDC (Mapped Diagnostic Context) Servicecamel-micrometer-observability
- Micrometer Observability implementation of Camel Telemetrycamel-resilience4j-micrometer
- Micrometer statistics for Resilience4j circuit breaker
Upgrading
Make sure to read the upgrade guide if you are upgrading from a previous Camel version.
If you are upgrading from, for example, 4.4 to 4.8, then make sure to follow the upgrade guides for each release in-between, i.e. 4.4 -> 4.5, 4.5 -> 4.6, and so forth.
The Camel Upgrade Recipes tool can also be used to automate upgrading. See more at: https://github.com/apache/camel-upgrade-recipes
Release Notes
You can find additional information about this release in the list of resolved JIRA tickets:
Roadmap
The following 4.16 release is planned for December 2025.