Apache Camel 4.1.0 → 4.18.1 — Breaking Changes
Parent doc:
upgrade-migration-guide-to-im-7-3-0.md
Confluence mirror: IM 7.2 → 7.3.0 — Apache Camel 4.1.0 → 4.18.1 — Breaking Changes
6. Apache Camel 4.1.0 → 4.18.1 LTS
Impact: HIGH | Type: DSL, Properties, API, Behavior
This upgrade spans 17 minor versions, each with breaking changes. Organized by category.
Coverage by the PFIMCORE-2957 migration script
The script (in im-upgrade-service) covers 66 of 70 (~94%) customer-facing breaking changes from §6 below. The 4 uncovered items are inherently un-detectable behavioral defaults — no source-level signal to match.
|
Section |
Items |
Covered |
Method |
|---|---|---|---|
|
§6.1 Property prefixes |
6 |
6 |
Property regex + case-flip transforms |
|
§6.2 XML DSL |
10 |
10 |
Regex + XML DOM walker |
|
§6.3 YAML/kamelet |
(out of scope) |
— |
IM uses XML routes only; convert kamelets manually if any |
|
§6.4 Simple operators |
5 |
5 |
Regex |
|
§6.5 File defaults |
3 |
3 |
Advisories |
|
§6.6 Data formats |
10 |
10 |
Regex + advisories |
|
§6.7 Health checks |
4 |
3 |
Advisories (1 inherent gap: SupervisingRouteController defaults) |
|
§6.8 Exchange API |
10 |
9 |
Regex (ACTIVE_SPAN) + 7 advisories (1 inherent gap: stream buffer size) |
|
§6.9 Secrets manager |
2 |
2 |
Regex (delimiter) + property advisory (engine) |
|
§6.10 REST DSL |
7 |
5 |
Bundled |
|
§6.11 Removed components |
7 |
7 |
URI/element route advisories |
|
§6.12 Deprecated components |
5 |
5 |
URI/element route advisories |
|
§6.13 Template/Script |
1 |
1 |
Advisory (silent breaker) |
|
§6.14 IM-internal |
6 |
— |
Out of scope (IM framework code, not customer integrations) |
|
Total (customer-facing) |
70 |
66 (~94%) |
|
6.1 Property Prefix Changes
|
Old Prefix |
New Prefix |
Version |
Notes |
|---|---|---|---|
|
|
|
Deprecated 4.5, removed 4.13 |
All prefixed properties must migrate |
|
|
|
4.4 |
Route controller properties |
|
|
|
4.5 |
Backlog tracing |
|
|
|
4.2 |
Debugger toggle |
|
|
(removed) |
4.11 |
Option no longer supported |
|
|
|
4.14 |
Server management |
IM Impact — properties migrated in default-application.properties and application.properties:
-
camel.springboot.main-run-controller→camel.main.main-run-controller -
camel.springboot.xml-routes→camel.main.xml-routes -
camel.springboot.xml-rests→camel.main.xml-rests -
camel.springboot.use-mdc-logging→camel.main.use-mdc-logging -
camel.springboot.stream-caching-spool-enabled→camel.main.stream-caching-spool-enabled -
camel.springboot.shutdown-timeout→camel.main.shutdown-timeout -
camel.springboot.jmx-enabled→camel.main.jmx-enabled -
camel.springboot.jmx-management-statistics-level→camel.main.jmx-management-statistics-level
6.2 XML DSL Changes (affect customer routes)
|
Change |
Version |
Impact |
|---|---|---|
|
Throttle EIP completely reworked |
4.3 |
Customer routes using |
|
Resequence EIP attributes |
4.3 |
Customer routes using |
|
|
4.10 |
Customer routes may break |
|
|
4.4 |
Customer routes may break |
|
|
4.4 |
Customer routes may break |
|
|
4.10 |
Customer routes may break |
|
Bean |
4.6 |
Customer routes defining beans inline may break |
|
Load balancer names changed (see table below) |
4.7 |
Customer routes may break |
|
|
4.10 |
Customer routes using fail-over load balancer may break |
|
|
4.12 |
REST DSL routes |
Throttle EIP Rework (4.3): Changed from "total requests per time period" to "concurrent requests" model.
<!-- Old: 10 requests per 1000ms -->
<throttle><constant>10</constant></throttle>
<!-- New: 10 CONCURRENT requests (not per-second!) -->
<throttle><constant>10</constant></throttle>
The timePeriodMillis option should be removed. This is a fundamental semantic change.
XPath/XQuery headerName Change (4.4):
<!-- Old -->
<xpath headerName="myHeader">/foo/bar</xpath>
<!-- New -->
<xpath source="header:myHeader">/foo/bar</xpath>
Load Balancer Renames (4.7):
|
Old Name |
New Name |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.3 YAML DSL / Kamelet Changes (affect customer kamelets)
|
Change |
Version |
Impact |
|---|---|---|
|
Kebab-case removed entirely |
4.13 |
Customer kamelets WILL break |
|
|
4.6 |
YAML routes |
|
Bean |
4.6 |
YAML routes defining beans inline may break |
|
|
4.15 |
YAML data format config |
|
|
4.18 |
YAML route config |
|
|
4.10 |
Kamelets now inherit route error handler |
|
Kamelet endpoint parameters now parsed in raw mode |
4.16 |
URI-encoding behavior change for sensitive parameters (passwords, keys) |
|
Kamelet routes no longer registered as JMX MBeans by default |
4.5 |
Kamelet visibility/metrics in JMX |
Kebab-case → camelCase mapping:
|
Old (kebab-case) |
New (camelCase) |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IM Impact: All .kamelet.yaml files migrated (set-header → setHeader, set-body → setBody).
6.4 Simple Language Operator Removals (affect customer routes)
Camel 4.18 removed these deprecated binary operators:
|
Old Operator |
New Operator |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Customer Action Required: Scan all XML route files for these operators.
6.5 File Component Behavior Changes (affect customer routes)
|
Change |
Version |
Impact |
|---|---|---|
|
|
4.13 |
File polling behavior changes — |
|
|
4.7 |
Idempotent file consumers |
|
File name header includes relative paths with |
4.10 |
File processing routes |
Customer Action Required: If using maxMessagesPerPoll with sorting, explicitly set eagerMaxMessagesPerPoll=false.
6.6 Data Format Changes
|
Change |
Version |
Impact |
|---|---|---|
|
|
4.12 |
JSON/XML unmarshalling now preserves key order |
|
Jackson option |
4.9 |
Affects multi-byte character handling |
|
CSV |
4.15 |
CSV data format config |
|
CSV |
4.15 |
CSV header config |
|
Flatpack |
4.15 |
Flatpack config |
|
JAXB/SOAP |
4.15 |
JAXB/SOAP config |
|
SOAP |
4.15 |
SOAP config |
|
Crypto |
4.15 |
Crypto data format config |
|
SwiftMx |
4.15 |
SwiftMx data format config |
|
XML Security |
4.15 |
xmlSecurity data format config |
6.7 Health Check Changes
|
Change |
Version |
|---|---|
|
Routes with |
4.7 |
|
SupervisingRouteController: |
4.7 |
|
FTP producer health checks added |
4.17 |
|
Health/metrics paths: |
4.14 |
6.8 Exchange API Changes
|
Change |
Version |
|---|---|
|
|
4.4 |
|
Intercepted endpoint: header → exchange property |
4.5 |
|
|
4.11 |
|
|
4.9 |
|
|
4.8 |
|
|
4.12 |
|
Stream buffer size: 4096 → 16384 bytes |
4.8 |
|
WireTap deep-copies |
4.7 |
|
WireTap |
4.4 |
|
JMS default header filter strategy now removes |
4.9 |
6.9 Secrets Manager Syntax Change (4.9)
# Old
{{hashicorp:secret:database/username}}
{{aws:database/username}}
# New
{{hashicorp:secret:database#username}}
{{aws:database#username}}
Additionally (Camel 4.7): the camel.vault.hashicorp.engine property and CAMEL_HASHICORP_VAULT_ENGINE environment variable were removed. Use the new hashicorp:engine:secret:… URI syntax instead — the engine is now part of the secret reference, not configured separately.
6.10 REST DSL Changes
|
Change |
Version |
|---|---|
|
|
4.5 |
|
|
4.5 |
|
Property placeholders in REST DSL now resolved eagerly at endpoint build time |
4.5 |
|
Swagger 2.0 support removed, only OpenAPI v3 |
4.5 |
|
OpenAPI specification now generated once at startup instead of on-demand per request |
4.5 |
|
REST OpenAPI Atlassian |
4.6 |
|
Contract-first uses individual routers per endpoint |
4.18 |
6.11 Removed Camel Components
|
Component |
Removed In |
|---|---|
|
|
4.4 |
|
|
4.4 |
|
|
4.9 |
|
|
4.9 |
|
|
4.9 |
|
|
4.9 |
|
|
4.11 |
6.12 Deprecated Camel Components
|
Component |
Deprecated In |
|---|---|
|
|
4.7 |
|
|
4.8 |
|
|
4.17 |
|
|
4.18 |
|
|
4.18 |
6.13 Template / Script Component Security (4.13 — BREAKING)
Camel 4.13 introduced a security-driven default change: most language and template components no longer permit headers to drive the template/script content unless the endpoint explicitly opts in.
|
Change |
Affected components |
|---|---|
|
Header-driven templates now require |
All template components (e.g., |
|
Header-driven scripts now require |
Language/script components (e.g., |
Customer impact: Any customer route or kamelet that relies on a header (for example CamelTemplateBody, CamelTemplateResource, CamelLanguageScript, or any custom header) to feed template/script content will silently stop processing the header and fall back to the configured static content. Routes do not throw — output is just wrong.
Customer action: Search for any ?allowTemplateFromHeader= parameters that may need adjustment, and add ?allowTemplateFromHeader=true to any endpoint URI where header-driven templates/scripts are intentional.
6.14 IM-Specific Camel Code Changes
Internal-only — customers can skip this section. These items live inside IM's own framework code (
pricefx-integrationmodule) and were applied in PFIMCORE-2862 before IM 7.3.0 shipped. They are listed here for IM framework developers validating the upgrade. No customer action required.
-
XmlWithNamespaceSplitter: Tokenizer API changed —TokenizeLanguage→TokenizerExpression+ExpressionReifier. -
CxfPayloadProcessor: CXF payload handling changed —CxfPayloadimport fromorg.apache.camel.component.cxf.common. -
New
serializeCxfPayload()method for explicit DOM serialization. -
RouteDeploymentError: Error message format changed —"because of Multiple consumers"→"Multiple consumers". -
PfxEventConsumer: Custom exponential backoff removed — Camel 4.x has built-in backoff viaScheduledPollConsumer. -
JSch/Groovy exclusions removed from
camel-jsch,camel-ftp,camel-groovy— Camel 4.18 manages these internally.