Camel 2.20.0 Release (currently in progress)
New and Noteworthy
Welcome to the x.y.z release which approx XXX issues resolved (new features, improvements and bug fixes such as...)
- Many internal optimisations in the Camel routing engine, such as reducing thread contention when updating JMX statistics, reducing internal state objects to claim less memory, and reducing the number of allocated objects to reduce overhead on GC etc, and much more.
- The Camel Maven Plugin can now validate for duplicate route ids in your source code.
- Splitted Twitter component into 4, now directmessage, seach, streaming and timeline has its own endpoint and scheme. See documentation for more details
HeadersMapFactory SPI which allows to plugin different implementations, or to use case sensitive maps that are faster than the default.
- Allow Kafka consumer to break on first unhandled exception, sync the offset from last known good, and then re-connect after one timeout cycle, to restart consuming again. This avoids loosing the failed message, but retry it again on either this consumer, or another consume which was re-balanced by Kafka. This requires to be turned on with the new option breakOnFirstError which can be set on both component or endpoint level.
- Starting and stoping the CamelContext when used with Spring framework (SpringCamelContext) was revised to ensure that the Camel context is started last - when all resources should be available, and stopped first - while all resources are still available
- Tracing via Tracer has been refactored to be using the Message History EIP which allows Camel to use same logic instead of doing twice the tracing/capture during runtime. This reduced the memory footprint.
Fixed these issues
- Fixed a infinitive recursion in Camel's Error Handler when an onException was routing to another route using direct endpoint and this route would throw a new exception that would circle back to the same onException or at a later point, which will cause an endless recursion.
- Fixed a potential issue with masking password from URI using RAW(xxx) would reveal part of the password if the password contains a & character.
- The Restlet component is now internally using curly brackets for its uri patterns instead of regular parentheses so it works similar to the other REST component and as Restlet framework itself does
- Fixed Hystrix EIP having wrong default for circuitBreakerForceClose when using camel-hystrix-starter with Spring Boot. The default should be false and not true
- Fixed Hystrix EIP when failing and running fallback not signaling to Hystrix itself so it can keep state of the failure and react accordingly to run in half-open mode as well.
- Fixed MDC logging loosing route id after calling a direct route from within a transacted route
- Fixed a regression with Bean and Simple OGNL expressions causing ambiguous method call exception when calling method implemented by super class when method is defined by interface and abstract class
- Fixed Rest DSL (server side) not returning response on all valid uri paths when clients call using a HTTP OPTIONS request
- Fixed Rest producer not using HTTP method (verb such as PUT) from the endpoint uri when calling a remote REST service
- Fixed Timer routes to shutdown more graceful and allow pending tasks to complete while they are in-flight.
- camel-reactor - a reactor based back-end for camel's reactive streams component
- The old Tracer which is based on the
org.apache.camel.processor.interceptor.Tracer class has been disabled and are not in use/working. Instead rely on custom tracing implementation via Message History EIP.
Important changes to consider when upgrading
Getting the Distributions
The above URLs use redirection
The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using FireFox
Getting the Binaries using Maven 2
To use this release in your maven project, the proper dependency configuration that you should use in your Maven POM is:
Git Tag Checkout
For a more detailed view of new features and bug fixes, see the: