Apache Camel 3.x Upgrade Guide
This document is for helping you upgrade your Apache Camel application from Camel 3.x to 3.y. For example if you are upgrading Camel 3.0 to 3.2, then you should follow the guides from both 3.0 to 3.1 and 3.1 to 3.2.
Upgrading Camel 3.14 to 3.15
Java 8 is no longer supported. Camel 3.15 onwards requires Java 11 or 17. |
Core Dependency changes
As part of CAMEL-17429 and CAMEL-17435, the following dependencies are no longer included by default on all the Camel modules:
-
com.sun.xml.messaging.saaj:saaj-impl
-
jakarta.xml.bind:jakarta.xml.bind-api
-
javax.annotation:javax.annotation-api
-
javax.xml.soap:javax.xml.soap-api
-
javax.xml.ws:jaxws-api
-
org.apache.geronimo.specs:geronimo-jta_1.1_spec
-
org.apache.geronimo.specs:geronimo-ws-metadata_2.0_spec
-
org.glassfish.jaxb:jaxb-runtime
These dependencies were included on the specific modules and components that required them on a per-case basis.
Applications with dependency on any of those, but using them transitively, should be modified to include them.
camel-core
Removed the deprecated Classic
value from startupSummaryLevel
enums.
The deprecated propertyName
on removeProperty
EIP has been removed, use name
instead.
Data Formats
The data formats naming has been made consistent to use Camel Case:
Old Name | New Name |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The Spring Boot auto-configuration names has also been renamed (uses dash case as this is Spring Boot naming style):
Old Name | New Name |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Message History
The message history output has changed to include source column, which refers to the Java class/XML file from the DSL the message was at the given time. (line precise error reporting).
This default formatting are (Source, ID, Processor, Elapsed):
MESSAGE_HISTORY_HEADER = "%-40s %-30s %-50s %-12s";
MESSAGE_HISTORY_OUTPUT = "%-40.40s %-30.30s %-50.50s %12.12s";
If you are using custom sizes then you need to adjust accordingly.
camel-endpointdsl
The Endpoint DSL is now more type-safe, where previously an option would be declared as Object
type,
is now declared using its actual type, such as javax.sql.DataSource
.
Option that are enums is now using the real enum FQN class name, instead of a duplicate enum
class that was embedded inside the Endpoint DSL. For example when using aws2sq
the
namingStrategy enum is changed from org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory
to org.apache.camel.component.aws2.s3.stream.AWSS3NamingStrategyEnum
class name.
camel-management
The route controller MBeans are moved from routecontrollers
to the existing services
node in the JMX MBean tree.
Removed deprecated operations on CamelContextMBean
and CamelRouteMBean
.
camel-util
Deleted the replaceAll
method of org.apache.camel.util.StringHelper
. Please use the replace
method of java.lang.String
instead, as it is much faster from Java 11 onward.
camel-yaml-dsl
Removed steps
from route
because steps should only be configured on from
making
the DSL consistent and similar to Java DSL.
Before it was possible to do:
- route:
id: demo-route
from:
uri: "timer:info"
steps:
- log: "message"
This should correctly be done with steps
as child of from
:
- route:
id: demo-route
from:
uri: "timer:info"
steps:
- log: "message"
The tod
EIP name has been removed, the correct names to use is toD
.
camel-jbang
The JBang app that was previously named CamelJBang
is now named camel
. It is still possible to use the older name by installing it using CamelJBang@apache/camel
but this approach is deprecated and should not be used in the future.
camel-cdi
The legacy XML in camel-cdi
with <camelContext>
is deprecated, instead the XML DSL route loader should be used.
JTA support is moved out of camel-cdi
to its own camel-cdi-jta
module.
The org.apache.camel.cdi.Main
class has moved from camel-cdi
to camel-cdi-main
JAR.
camel-kafka
The following classes were moved from org.apache.camel.component.kafka
to org.apache.camel.component.kafka.consumer
:
-
DefaultKafkaManualAsyncCommit
-
DefaultKafkaManualAsyncCommitFactory
-
DefaultKafkaManualSyncCommit
-
DefaultKafkaManualSyncCommitFactory
-
KafkaAsyncManualCommit
-
KafkaManualCommit
-
KafkaManualCommitFactory
The signature for KafkaManualCommitFactory
and its classes has been adjusted to abstract some runtime parameters. The old signature is still available but will be removed in 3.16.0.
camel-karaf
The camel-endpointdsl
and camel-componentdsl
is no longer supported on Apache Karaf.
The camel-osg-activator
, camel-google-calendar
, camel-google-drive
, camel-google-mail
, camel-google-sheets
, and camel-jooq
has been removed.
camel-netty / camel-netty-http
The netty producer has migrated from commons-poll v1 to v2.
The option producerPoolMaxActive
is renamed to producerPoolMaxTotal
.
camel-quartz
Removed the option startDelaySeconds
as this does not work correctly and causes problems if in use.
camel-openapi-java
The contextPath specified in the REST configuration is no longer added to the paths of the operations in the generated openapi specification.
camel-google-drive
The camel-google-drive
component has upgraded to the latest version of google-api-services-drive
. This means that support for access to the Google Drive Realtime APIs
via URIs like google-drive:drive-realtime
has been removed. Google deprecated and retired the realtime APIs some time ago.