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.11 to 3.12

API changes

The methods getComponentNames and getLanguageNames on CamelContext have been changed to return Set<String> instead of List<String>.

Added getExchangePattern to Endpoint which is a method that already exists on DefaultEndpoint. However the method is needed to be exposed in the API as well.

The ThroughputLogger has changed the return type from int to long in the getReceivedCounter method.

Removed the dataSonnet(Expression) methods from RouteBuilder as they should not be used; use the methods that take String as type.

Data Formats

We had to fix all the data-formats options that take a Java classname to support using the .class type in Java vs using a string value in XML/YAML.

This means the following options have been renamed:

  • camel-asn1 renamed clazzName to unmarshalType

  • camel-avro renamed collectionTypeName to collectionType, and jsonViewTypeName to jsonView, and unmarshalTypeName to unmarshalType

  • camel-cbor renamed collectionTypeName to collectionType, and unmarshalTypeName to unmarshalType

  • camel-jacksonxml renamed collectionTypeName to collectionType, and jsonViewTypeName to jsonView, and unmarshalTypeName to unmarshalType

  • camel-json renamed collectionTypeName to collectionType, and jsonViewTypeName to jsonView, and unmarshalTypeName to unmarshalType

  • camel-protobuf renamed collectionTypeName to collectionType, and jsonViewTypeName to jsonView, and unmarshalTypeName to unmarshalType

  • camel-yaml renamed unmarshalTypeName to unmarshalType

Rest DSL

The clientRequestValidation now includes one more check:

  • Parsing error of the message body (JSon, XML or Auto binding mode must be enabled). (Returns HTTP Status 400)

camel-aws2-ddb

The iteratorType option has been dropped in favour of the streamIteratorType option. Possible values are FROM_LATEST and FROM_START.

The sequencenumberprovider functionality is no longer supported.

camel-catalog

Remove the APIs to return the website documentation in ascii doc and html format, it is the methods with naming pattern …​AsciiDoc and …​HtmlDoc.

camel-cdi

The XML DSL with camel-cdi has removed the deprecated <proxy> functionality.

camel-http-common

The method org.apache.camel.http.common.HttpHelper.readResponseBodyFromInputStream is renamed to cacheResponseBodyFromInputStream, because it must cache the response body as it is used with the PollingConsumer in camel-http, that otherwise may fail if the original InputStream is closed by the underlying HTTP client.

camel-jms

The camel-jms component now better support Apache Artemis in streaming mode for large messages support, when Artemis is using a pooled connection pool (previously pooled was not supported). Now the option artemisStreamingEnabled must explicit be set to true to enable support for Artemis streaming mode. Previously Camel tried to auto-detect this.

camel-google-sheets

The google-sheets-stream component has changed the syntax, from: google-sheets-stream:apiName to: google-sheets-stream:spreadsheetId

The old apiName option was not in use, and therefore it has been replaced with spreadsheetId which used to be query parameter.

camel-kamelet / route templates

Kamelet parameters that are named such as host, port are now always used with their configured value. Before the value in use may have been from an ENV variable with the same name.

camel-kafka

The camel-kafka component was refactored to avoid blocking API calls in the Kafka consumer. As part of the refactoring the configuration consumerStreams was removed. In previous versions this setting configured the size thread pool used by the component to create Kafka consumers. As of 3.12, the size of the thread pool is set to be the same as the number of concurrent consumers (set by consumersCount).

camel-spark

The camel-spark component has been upgraded from Spark 2.x to 3.x.

camel-influxdb

The camel-influxdb won’t autocreate the database if not present anymore. With CAMEL-16892 we introduced the checkDatabaseExistence and autoCreateDatabase options for this purpose. Both of the options are false by default. So, you’ll need to set both to true if you want to have the older releases' behavior, or create the database yourself before using the camel component.

camel-huawei

All Huawei Cloud components use AK/SK as security keys to authenticate against the hauwei cloud backend services. Initally AK was mapped to authenticationKey in the endpoint class. To be in-line with Huawei Cloud’s naming conventions, we have renamed this option from authenticationKey to accessKey for all components. This is a breaking change for users who are already using huawei cloud components until version 3.11.x.

camel-spring-cloud-*-starter

The deprecated camel-spring-boot cloud-starter components camel-spring-cloud-starter, camel-spring-cloud-consul-starter, camel-spring-cloud-netflix-starter and camel-spring-cloud-zookeeper-starter have been removed.