Apache Camel 4.1 (non LTS) 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
We continue with our performance optimizations in the core.
This release brings an optimized type converter, that works around JDK issue 8180450, and can bring improved performance for many scenarios, such as the content-based router and filter.
DSL
The XML and YAML DSL now have better support for defining bean which can be configured with properties, and references to other beans. We have added support for easier configuration to specify constructor arguments, factory beans and methods, and inlined script or java code that gives full power for creating the bean.
We have also enhanced camel-core
to make it able to dump route DSLs with bean included. This makes it possible for Camel being able to migrate your route sources between XML and YAML DSLs (see more in next section).
The XML DSL camel-xml-io
now has line-precise parsing error that shows you exactly where the problem is.
Camel JBang (Camel CLI)
We have continued investing in Camel JBang, and this time we introduce the new DSL transform
command, that can be used for transforming your Camel source routes from one DSL to another (currently only XML and YAML is supported).
We also added best effort support for loading and running legacy OSGi blueprint XML files. This is intended for Camel end users to have a tool they can use to assist them for migrating away from Apache Karaf to a modern Camel runtime such as Spring Boot, Quarkus or vanilla Camel Main. You can use this to migrate those OSGi blueprint XML files to standard Camel XML or YAML. We plan to publish a blog post about this in the near future.
Added ignoreLoadingError
option to run
and transform
commands, that allows to keep running, even if there is error loading route sources on startup.
The export
is made more robust and can export, even if not all source code is present to fully run the project.
There is a new sbom
command to generate SBom (CycloneDX or SPDX).
The --jvm-debug
option in run
can now be configured with the debugging port (4004 by default).
Added camel get startup
command to output timed report of startup procedures that can help identify which part may be slow on startup.
Camel Kafka
Added type converter for byte[]
to String
to make it easy to get Kafka header content as text value (data is stored as byte array by Kafka).
Camel OpenTelemetry
Added OpenTelemetryTracingStrategy
that allows fine-grained tracing of every step a message is routed by Camel.
Decorators now uses OpenTelemetry Semantic Naming Style for tracing headers.
Spring Boot
Upgraded to latest 3.1.4 release.
Miscellaneous
The camel-report:route-coverage
Maven plugin can now generate reports in HTML format.
The file
component now has options to accept hidden files and directories.
The xslt
component is more dynamic by make it possible to specify the XSLT template as a header, meaning that each Exchange
can use a dynamic computed stylesheet.
The camel-aws-sqs
consumer is now batching visibility extension requests (reducing network bandwidth) for inflight messages currently being processed by Camel.
The camel-aws-s3
producer can now upload big payloads without reading stream into memory.
The rest
component can now use a custom HeaderFilterStrategy
.
The HTTP server based components will now mute exceptions by default (avoid sending stactraces in HTTP 500 errors back to clients). Set muteException=false
to have old behaviour.
New Components
camel-aws2-redshift-data
- Perform operations on AWS Redshift using Redshift Data API.camel-aws2-timestream
- A Camel Amazon Web Services TimeStream componentcamel-thymeleaf
- Transform messages using a Thymeleaf template.
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 list of JIRA tickets resolved in the release: