Apache camel 4.4.0 Release

New and Noteworthy

This release is the new Camel 4.4.0 LTS release.

Supported Java version

This version supports Java 17 and 21.

Getting the Binaries using Maven

To use this release in your Apache Maven pom.xml, import the Camel Bill of Materials (BOM) and then include the camel-core and any other components needed without specifying the version.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-bom</artifactId>
      <version>4.4.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-core</artifactId>
  </dependency>
  <dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-COMPONENT</artifactId>
  </dependency>
</dependencies>

To use this release in a Spring Boot application, use Spring Boot spring-boot-dependencies and Camel camel-spring-boot-bom Bill of Materials (BOM):

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version> SPRING BOOT VERSION HERE </version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.camel.springboot</groupId>
      <artifactId>camel-spring-boot-bom</artifactId>
      <version>4.4.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-COMPONENT-starter</artifactId>
  </dependency>
</dependencies>

Apache Camel

Git tag checkout

Release is tagged with camel-4.4.0 in the Git, to fetch it use:

git clone https://git-wip-us.apache.org/repos/asf/camel.git
cd camel
git checkout camel-4.4.0

Resolved issues

Here is a list of all the issues that have been resolved for this release

Bug (38)

CAMEL-20664
camel-mapstruct - MapStruct mappers not found in Spring Boot
CAMEL-20401
camel-kudu: Potential NullPointerException on endpoint stop
CAMEL-20399
String to short type conversion fails
CAMEL-20394
camel-jbang wrong transformation when rests and routes tags are used together
CAMEL-20392
camel-jq - Inclined jq in simple language should keep quotes
CAMEL-20380
Kafka Batch Consumer: doesn't honor the poll timeout set
CAMEL-20378
Languages that can take source from header or property is not thread safe
CAMEL-20375
Camel-ical: Camel-20370 brought a NPE in some cases
CAMEL-20373
camel-kafka - KafkaIdempotentRepository may allow some duplicates after application restart
CAMEL-20370
dataformat configurer is not generated for camel-beanio
CAMEL-20362
Camel-Netty-HTTP: Headers validation should be enabled by default
CAMEL-20357
camel-core - throttle EIP doesn't work as expected when it's in a loopDoWhile
CAMEL-20356
camel-core - LoggerHelper returns wrong name for source code line precise
CAMEL-20354
camel-jbang - Using camel run --source-dir component should be able to load from classpath
CAMEL-20352
camel.springboot.includeNonSingletons is not respected anymore: prototype Route Builders are always initialized.
CAMEL-20351
Camel Jbang execution from remote file doesn't work anymore
CAMEL-20350
camel-observation - Null values should be null instead of a string null literal value
CAMEL-20349
camel-salesforce: ClassCastException when a request is retried after a 401
CAMEL-20342
camel-openapi-java - NPE in OpenApiHelper
CAMEL-20340
camel-jbang - camel dependency list throws Exception for dataformats
CAMEL-20339
camel-yaml-dsl - Saga EIP with options causes NPE
CAMEL-20334
AWS S3 cloudevents data type does not set proper data Content-Type
CAMEL-20307
camel-quickfix -Queue Full
CAMEL-20301
Camel retains objects when restarting route via policy
CAMEL-20292
Probable bug in DependencyDownloaderConsole - inverted flags in output
CAMEL-20280
camel-jcache - JCachePolicy does not init bypassExpression
CAMEL-20262
camel-spring-boot - TomcatEmbeddedWebappClassLoader return nested instead file in jar file path
CAMEL-20254
camel-http - pre-emptive authentication breaks basic auth
CAMEL-20250
camel-kinesis: resume API fails to resume properly
CAMEL-20248
camel-salesforce: Most integration tests failing
CAMEL-20239
Camel-Azure-Files: The component doesn't set account parameter on the URI
CAMEL-20232
camel-core - Kamelets with Enrich and PollEnrich dynamic endpoints with template parameters
CAMEL-20218
KafkaIdempotentRepository cache incorrectly flagged as ready
CAMEL-20121
camel-smpp SMPPSession should be closed after receiving Unbind from peer
CAMEL-19849
camel-zipfile: fails to release exchange due to Exceptions
CAMEL-19262
camel-azure-eventbus - Apache Camel wrapper for Service Bus stops receiving message.
CAMEL-17722
MDC - custom properties in MDC Unit Of Work are not cleared at the end of route
CAMEL-17721
MDC - custom MDC property value is fixed to first assigned value by MDCUnitOfWork

Dependency upgrade (6)

CAMEL-20344
camel-spring-boot - Upgrade to 3.2.2
CAMEL-20278
Upgrade Wildfly Elytron to 2.x version
CAMEL-20116
Upgrade to Jackson BOM 2.16.0
CAMEL-19971
Camel-Consul: Consul-client repository is now read only
CAMEL-19722
camel-etcd3 - Upgrade jedtc to 0.7.6
CAMEL-19620
camel-coap - Upgrade to Californium Scandium 3.x

Improvement (51)

CAMEL-20409
camel-core - ModelReifierFactory should detect custom on classpath
CAMEL-20403
Support Knative broker as source/sink in Pipe
CAMEL-20400
Support for Knative SinkBinding
CAMEL-20398
camel-kubernetes - Add option on component to create kubernetes client
CAMEL-20396
camel-kudu: Allow KuduClient to be autowired
CAMEL-20391
camel-core - All languages should support expression loaded from external resource
CAMEL-20387
camel-tracing - Use case insensitive headers
CAMEL-20386
camel-jq - Add @JQ for bean annotation
CAMEL-20382
camel-kafka - RecordMetadata header should be named like the other headers
CAMEL-20376
camel-xpath - XPath language add support for variables
CAMEL-20369
camel-beanio - Bring back beanio as v3
CAMEL-20365
camel-ftp - Add option to configure yes/no answer to create known host file
CAMEL-20364
camel-jms - Remove JMSCorrelationIDAsBytes header as its not needed
CAMEL-20363
camel-jms - Make getting JMSCorrelationID more robust for brokers that has bugs
CAMEL-20359
camel-groovy - Consistent name to refer to exchangeProperties
CAMEL-20358
camel-microprofile-config: CamelMicroProfilePropertiesSource should consider active profiles when loading properties
CAMEL-20355
Throttle EIP: milliseconds not available anymore
CAMEL-20346
camel-core - Simple language contains function can be improved
CAMEL-20345
camel-core - Simple binary operator in predicates better detected by predicate parser
CAMEL-20308
Change order of camel-spring-boot-bom and spring-boot-dependencies in dependencyManamgent
CAMEL-20306
Camel-CassandraQL: Add ObjectInputFilter String pattern parameter in CassandraAggregationRepository to be used in unmarshall operations
CAMEL-20303
Camel-Sql: Add ObjectInputFilter String pattern parameter in JdbcAggregationRepository to be used in unmarshall operations
CAMEL-20298
Enhancing JSONata Compatibility for Full Reference Port
CAMEL-20281
Camel-AWS Components: Make it possible to use AwsSessionCredentials to support temporary credentials
CAMEL-20275
components - Mark options that can are used for text inputs such as a SQL query
CAMEL-20274
camel-management - Add option to allow updating routes
CAMEL-20273
camel-jbang - Stub dataformat and language during export
CAMEL-20271
Camel-AWS-Cloudtrail: Improve consumers by adding more information as exchange headers
CAMEL-20258
[JBang] Use quartz out of the box for camel-cron
CAMEL-20253
camel-jbang - Add support for jolokia 2.x
CAMEL-20249
camel-jbang - Reload routes with micrometer should clean up old routes
CAMEL-20247
Rework Dynamic Router EIP Component
CAMEL-20246
camel-core - WireTap should not create correlated exchange copy
CAMEL-20245
camel-jbang - Startup should log http summary if already started such as when using supervised route controller
CAMEL-20243
camel-main - Move route controller options into its own group
CAMEL-20242
camel-routes health check reports UP right before routes were attempted to be setup when using supervising route controller
CAMEL-20241
camel-jbang - Pretty print xml body should not have noisy empty lines
CAMEL-20238
Add spring-boot-starter-jdbc dependency to camel-spring-jdbc-starter
CAMEL-20236
camel-salesforce: add missing properties to bulk 2.0 Job class
CAMEL-20233
camel-jbang - camel catalog other does not list kotlin-dsl
CAMEL-20231
camel-jasypt - make generators configurable
CAMEL-20230
camel-core - PollEnrich and Enrich EIP should eager start component if possible
CAMEL-20228
camel-jbang - camel export doesn't recognize component in pollenrich
CAMEL-20219
Add Protobuf data type transformer
CAMEL-20202
camel-azure - Consumers should avoid loading entire payload into memory
CAMEL-19956
camel-jbang - Run with custom log4j2.properties file
CAMEL-19413
camel-parquet-avro: add some defaulted values as options on dataformat to make it more configurable
CAMEL-19411
camel-kamelet - Should be using noErrorHandler
CAMEL-18969
Support mongodb connection string/uri to configure camel-mongodb component
CAMEL-18590
Camel-Azure components: Define a unique configuration for authentication
CAMEL-14028
Allow DataFormats to unmarshal known data formats without first converting to bytes

New Feature (25)

CAMEL-20408
camel-core - Tracer should include exchange variables
CAMEL-20406
camel-core - Route scoped variables
CAMEL-20379
[camel-test-infra-cli] Improve container configuration, adding external maven repositories
CAMEL-20338
Camel JMS producer should add headers
CAMEL-20336
Add a WebAssembly component and language
CAMEL-20333
Kotlin API
CAMEL-20289
camel-core - FluentProducerTemplate - Add withVariable and withProperty
CAMEL-20288
camel-core - Convert header and variable To another name
CAMEL-20286
camel-netty: add support for native transport over KQueue
CAMEL-20285
camel-json-validator: Add ability to configure ObjectMapper using endpoint properties
CAMEL-20277
camel-grpc: gRPC proxy with streaming
CAMEL-20270
Introduce plugins for Camel JBang
CAMEL-20251
Add Camel K commands to Camel JBang
CAMEL-20229
Camel-Azure-Storage-Queue: Add CloudEvents Data Type Transformer
CAMEL-20223
Camel-Spring-Boot: Camel Azure Key Vault should Support Azure Identity in the component and secrets function
CAMEL-20220
Camel Azure Key Vault: Support Azure Identity in the component and secrets function
CAMEL-19749
camel-core - Allow users to use variables in route to store data instead of headers
CAMEL-19241
Adding a Kafka Batch Consumer
CAMEL-18559
Components which do remote communication should be marked as such
CAMEL-18082
camel-jbang - Prompt mode for required values
CAMEL-17825
Hash generator in the Simple language
CAMEL-17719
camel-salesforce: allow to retrieve CDC json schema from meta service
CAMEL-16064
camel-kafka - Add batching consumer
CAMEL-15570
camel-jte - Template Engine component
CAMEL-15252
Google Pubsub Component manual acknowledgement mode

Sub-task (1)

CAMEL-20007
Java 21 - Fix test failures related to Ignite component

Task (29)

CAMEL-20397
camel-jms: fix incorrect details regarding JMS 1.1 and 2.0
CAMEL-20384
modernization: modernize map operations
CAMEL-20366
Dependabot: Define some exclusions in the yaml configuration
CAMEL-20360
camel-jasypt: Improve and tidy documentation
CAMEL-20347
Improve handling of interrupts
CAMEL-20335
spring-xml build error using `/component-test` on GitHub Actions
CAMEL-20305
camel-core: ensure log consistency
CAMEL-20297
Swallowing interrupts
CAMEL-20296
Allow testing through /component-test for projects having `it` folders
CAMEL-20294
camel-facebook: review and/or deprecate
CAMEL-20283
camel-elasticsearch - Deprecate
CAMEL-20279
Fix issue related to some flaky tests using test container with AWS localstack or hashicorp
CAMEL-20268
Several classes are reformatted during mvn install, causing pull/merge issues
CAMEL-20267
camel-core: convert Throttler and SamplingThrottler to a monotonic time source
CAMEL-20264
AvailablePortFinder is duplicated
CAMEL-20261
camel-http ignoreCookies option value has been renamed
CAMEL-20260
Remove Camel HDFS Starter
CAMEL-20259
Remove Camel-HDFS Component
CAMEL-20257
camel-core: convert AbstractContext to the clock API
CAMEL-20256
camel-core: convert Throughput logger to a monotonic time source
CAMEL-20252
camel-core: review performance tests
CAMEL-20235
camel-kafka: consolidate commit management behavior between component and endpoint
CAMEL-20234
camel-core: consolidate / simplify exchange constructors
CAMEL-20225
camel-core: modernize management of duration and timestamps
CAMEL-20224
Deprecate milliseconds-based input from StopWatch
CAMEL-20169
camel-salesforce restore ResponseNotifier
CAMEL-19746
[DOCS ] Camel-mybatis component - missing code examples
CAMEL-19519
camel-file: replace Thread.sleep in tests
CAMEL-19338
Add integration tests for camel-jbang

Test (6)

CAMEL-20389
Fix incorrectly named integration tests
CAMEL-20353
camel-rest-openapi: test broken after swagger upgrade
CAMEL-20295
camel-grpc: Enable tests to run on more platforms
CAMEL-20284
camel-ignite - Enable tests on JDK21
CAMEL-20276
camel-jms: shared topic tests are broken
CAMEL-20269
camel-test-infra-artemis: concurrency issues

Wish (1)

CAMEL-18482
camel-core - Pre 3.13 Split EIP behaviour

Keys

You can verify your download by following these procedures and using these KEYS.