Apache Camel 3.20 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
The Split EIP has been optimized to perform faster and reduced overhead when splitting by a String literal or a regular expression.
When working with EIPs you may want to temporarily disable one or more EIPs. Today you have to comment out code, or remove the EIPs. We have now introduced the disabled
option which you quickly can enable on EIPs to turn off. The Rest DSL also has the new disabled
option to quickly turn off specific Rest endpoints/verbs.
The tracer now outputs message bodies that are stream caching based, so users can see the content easily.
Routes can now have prefixId
specified, which is a prefix to assign every node IDs in the route. This makes it easy to separate node IDs when you have many routes, or are using route templates.
Data Format DSL
The Data Format DSL is a builder API that allows using type safe construction of Camel Data Formats, . and is exclusively available as part of the Java DSL.
The DSL can be accessed directly from the RouteBuilder
thanks to the method dataFormat()
.
Language DSL
The Language DSL is a builder API that allows using type safe construction of Camel Languages, and is exclusively available as part of the Java DSL.
The DSL can be accessed directly from the RouteBuilder
thanks to the method expression()
.
Camel JBang (Camel CLI)
In this release we continue the expansion of Camel CLI.
Camel JBang now uses standard Maven for downloading JARs instead of using the ShrinkWrap project.
We have reduced the configuration summary logging noise when using Kamelets.
Custom type converters are now detected by Camel JBang when downloading new JARs.
Camel JBang makes using camel-micrometer
work out of the box, by automatic creating a MeterRegistry
if none is provided.
When using Rest DSL with api-doc enabled, then Camel JBang will automatically download camel-openapi-java
if needed.
Camel JBang now has shell completions which can be installed with the camel completion
command, to generate bash/zsh scripts.
The camel export
command now supports Gradle as build-tool instead of Maven.
We have also added new commands to easily get details about:
- metrics
- health-checks
- inflight messages
- blocked messages
- quickly check total message/failure (easily parseable in shell scripting)
The camel doc main
command shows all the main option in tables.
Camel JBang will now compile csimple
languages on startup, if in use.
Added camel run --code='...'
to quickly run some Java DSL code.
There is a lot more that Camel JBang can do, so make sure to read the Camel JBang documentation. It is also a good idea to run camel --help
to list all available commands.
There you can also find information on how to get JBang installed and how to install the Camel app in JBang.
Camel Open Telemetry
Camel can now correct associate spans across both synchronous and asynchronous endpoints.
Camel YAML DSL
The camel-yaml-dsl
schema now includes error handler and route configuration.
Fixed a bug preventing the intercept EIP to work when used in YAML DSL.
Camel Kafka
Many bug fixes and smaller improvements.
New Components
There are 8 new components:
camel-etcd3
- Get, set, delete or watch keys in etcd v3 key-value store.camel-influxdb2
- Interact with InfluxDB v2, a time series database.camel-javascript
- Evaluates a JavaScript expressioncamel-kubernetes
- Perform operations on Kubernetes Events and get notified on Events changescamel-plc4x
- Read and write to PLC devicescamel-rocketmq
Send and receive messages from RocketMQ clustercamel-swift
- Encode and decode SWIFT MT/MX messagescamel-wal
- Camel WAL component for the Resume API
Spring Boot
We have upgraded to the latest Spring Boot 2.7 release.
The camel-micrometer-starter
now have additional auto configuration options, to easily configure micrometer settings.
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:
Camel 4 is coming
A new major version of Camel is planned for the first half of 2023 with a bunch of amazing main goals such as the support of Spring 6, Spring Boot 3, and Quarkus 3. It will be proposed as a major version due to the Jakarta migration that brings breaking changes.
Regarding Camel 3, we still plan to release LTS versions twice a year, but be aware that most of our efforts will be focused on Camel 4, so don’t expect too many improvements and features inside.
For more information about Camel 4 and the future of Camel 3, stay tuned, a dedicated blog post will be available soon.