|
| 1 | +--- |
| 2 | +title: "Apache Camel 4.15 What's New" |
| 3 | +date: 2025-10-09 |
| 4 | +draft: false |
| 5 | +authors: [ davsclaus,cunningt,squakez] |
| 6 | +categories: [ "Releases" ] |
| 7 | +preview: "Details of what we have done in the Camel 4.15 release." |
| 8 | +--- |
| 9 | + |
| 10 | +Apache Camel 4.15 has just been [released](/blog/2025/10/RELEASE-4.15.0/). |
| 11 | + |
| 12 | +This release introduces a set of new features and noticeable improvements that we will cover in this blog post. |
| 13 | + |
| 14 | +## Camel Core |
| 15 | + |
| 16 | +You can now easier extend Camel via 3d-party dependencies via Java ServiceLoader using the `ContextServicePlugin` SPI. |
| 17 | + |
| 18 | +You can add custom sensitive keys to `camel.main.additionalSensitiveKeywords` which Camel will mask in logging. |
| 19 | + |
| 20 | +## Camel JBang |
| 21 | + |
| 22 | +`camel debug` now also supports debugging Camel Quarkus applications, by executing `camel debug pom.xml` which will |
| 23 | +detect that it's a Camel Quarkus Maven project, and then startup Quarkus via `mvn quarkus:dev` and attach |
| 24 | +the Camel route debugger automatically. |
| 25 | + |
| 26 | +The `camel get route-dump` now dumps in YAML format by default. |
| 27 | + |
| 28 | +Added IBM MQ to `camel infra` which makes it easy to start up a local MQ broker for development purposes. |
| 29 | + |
| 30 | +## Camel Groovy |
| 31 | + |
| 32 | +Added the new `camel-groovy-xml` data format is a basic data format to transform XML to Groovy Node objects, |
| 33 | +and back to XML. This is convenient when working with XML and using Groovy for data manipulation. |
| 34 | + |
| 35 | +This data format is limited in functionality but intended to be easier to use. There are none or only a few options to configure. |
| 36 | + |
| 37 | +## Camel Spring Boot |
| 38 | + |
| 39 | +`camel-spring-boot` is upgraded to the latest Spring Boot 3.5.6 release. |
| 40 | + |
| 41 | +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. |
| 42 | + |
| 43 | +## YAML DSL |
| 44 | + |
| 45 | +It is now possible to inline Maps in the `parameters` section. However Camel components rarely have options |
| 46 | +that are Map based, but when they do this makes it easier to use. For example the plc4j component allow to |
| 47 | +configure _tags_ as a Map: |
| 48 | + |
| 49 | +```yaml |
| 50 | +- from: |
| 51 | + uri: "timer://tick" |
| 52 | + parameters: |
| 53 | + period: "1s" |
| 54 | + steps: |
| 55 | + - to: |
| 56 | + uri: "plc4j" |
| 57 | + parameters: |
| 58 | + driver: "some driver url here" |
| 59 | + tags: |
| 60 | + "tags_2": "XXX" |
| 61 | + "tags_6": "YYY" |
| 62 | +``` |
| 63 | +
|
| 64 | +In this example the _tags_ options is of Map type and can be configured using YAML map syntax. |
| 65 | +Because the keys use underscore, then they are quoted. |
| 66 | +
|
| 67 | +## Java 25 |
| 68 | +
|
| 69 | +We have prepared the code-base for the upcoming Java 25 release. However, this release does |
| 70 | +not officially support Java 25, but we are not aware of any issues (feedback is welcome). |
| 71 | +We will work on official Java 25 support in the following releases. |
| 72 | +
|
| 73 | +## Micrometer Observability implementation of Camel Telemetry |
| 74 | +
|
| 75 | +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. |
| 76 | + |
| 77 | +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. |
| 78 | + |
| 79 | +## Logging MDC (Mapped Diagnostic Context) Service |
| 80 | + |
| 81 | +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. |
| 82 | + |
| 83 | +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: |
| 84 | + |
| 85 | +```yaml |
| 86 | + - setHeader: |
| 87 | + name: "customHead" |
| 88 | + constant: "I am an header" |
| 89 | + - setProperty: |
| 90 | + name: "customProp" |
| 91 | + constant: "I am a property" |
| 92 | +``` |
| 93 | + |
| 94 | +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: |
| 95 | + |
| 96 | +```text |
| 97 | +... [%X{camel.contextId}, %X{camel.routeId}, %X{camel.exchangeId}, %X{camel.messageId}, %X{customHead}, %X{customProp}] |
| 98 | +``` |
| 99 | + |
| 100 | +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. |
| 101 | + |
| 102 | +## Miscellaneous |
| 103 | + |
| 104 | +Upgraded many third-party dependencies to the latest releases at the time of release. |
| 105 | + |
| 106 | +The `camel-file` used as clustered file-lock (`FileLockClusterView`) is now more resilient to split-brain scenarios. |
| 107 | + |
| 108 | +## New Components |
| 109 | + |
| 110 | +- `camel-aws2-textract` - Extract text and data from documents using AWS Textract |
| 111 | +- `camel-aws2-transcribe` - Automatically convert speech to text using AWS Transcribe service |
| 112 | +- `camel-docling` - Process documents using Docling library for parsing and conversion |
| 113 | +- `camel-groovy-xml` - Transform between XML and Groovy Node (Map structure) objects. |
| 114 | +- `camel-langchain4j-embeddingstore` - Provides support for 25+ vector databases using the LangChain4j EmbeddingStore API. |
| 115 | +- `camel-keycloak` - Manage Keycloak instances via Admin API |
| 116 | +- `camel-mdc` - Logging MDC (Mapped Diagnostic Context) Service |
| 117 | +- `camel-micrometer-observability` - Micrometer Observability implementation of Camel Telemetry |
| 118 | +- `camel-resilience4j-micrometer` - Micrometer statistics for Resilience4j circuit breaker |
| 119 | + |
| 120 | +## Upgrading |
| 121 | + |
| 122 | +Make sure to read the [upgrade guide](/manual/camel-4x-upgrade-guide-4_14.html) if you are upgrading from a previous |
| 123 | +Camel version. |
| 124 | + |
| 125 | +If you are upgrading from, for example, 4.4 to 4.8, then make sure to follow the upgrade guides for each release |
| 126 | +in-between, i.e. |
| 127 | +4.4 -> 4.5, 4.5 -> 4.6, and so forth. |
| 128 | + |
| 129 | +The Camel Upgrade Recipes tool can also be used to automate upgrading. |
| 130 | +See more at: https://github.com/apache/camel-upgrade-recipes |
| 131 | + |
| 132 | +## Release Notes |
| 133 | + |
| 134 | +You can find additional information about this release in the list of resolved JIRA tickets: |
| 135 | + |
| 136 | +- [Release notes 4.15](/releases/release-4.15.0/) |
| 137 | + |
| 138 | +## Roadmap |
| 139 | + |
| 140 | +The following 4.16 release is planned for December 2025. |
| 141 | + |
0 commit comments