Apache Camel 2.19.0 Release
New and Noteworthy
Welcome to the 2.19.0 release which resolved over 670 issues including new features, improvements and bug fixes.
- Introduced Camel Connector’s which is a simplified version of a Camel component that has been pre-configured for a specific use-case.
- Upgraded to Spring Boot 1.5.x.
- The Camel Maven Plugin now provides the
camel:validategoal to parse your Java and XML source code for any Camel routes and report invalid Camel endpoint uri and simple expression errors. You can run this at code time (not runtime).
Mainand Spring Boot and Camel Maven Plugin can now auto terminate the JVM after Camel has been running for maximum duration of seconds, processed messages or been idle for a period.
- Camel source code can build with Java 9 in preparation for official support for Java 9 in a future release
- All the Camel Spring Boot starter components now has more of the components default values included in their metadata which allows tooling to display such information
- Deprecated more components and camel-core APIs that will be dropped in Camel 3.0 or sometime in the future
ReloadStrategyas SPI which allows custom providers to implement logic for triggering live reloads of Camel routes.
- The Camel Maven Plugin now allows to live reload route changes from XML files when running Camel. This can also be enabled from the
- Introduced a new
camel-catalog-restartifact which is a tiny standalone REST API of the CamelCatalog using JAX-RS and Swagger Annotations.
camel-catalog-rest-appas a standalone application which used Apache CXF with Jetty to host the Catalog REST API with embedded Swagger UI
nullfrom Bean should work similar to how
transformworks when they set a
- The Camel Spring Boot starter components now have their auto configuration depends on
org.apache.camel.springboot.CamelAutoConfigurationwhich makes it easier writing unit tests where you can exclude
org.apache.camel.springboot.CamelAutoConfigurationto turn off Camel Spring Boot auto configuration completely.
- Camel now supports OWASP dependency check maven plugin
- NATS component now supports TLS and explicit flushing (with timeout) of the connection
- Metrics component now supports Gauge type
- File consumer now supports idempotent-changed and idempotent-rename read lock strategies for clustering.
- Camel Catalog now supports custom runtime providers that only includes the supported Camel components, languages and data formats running in that container. For example for Karaf or Spring Boot in the camel-catalog-provider-karaf and camel-catalog-provider-springboot.
- The bean component will when calling a method that returned an instance of
Callablenow call that callable to obtain the chained result. This allows to call Groovy functions/closures etc.
- Failover Load Balancer with inheritErrorHandler=false, now allows Error Handler to react after the load balancer is exhausted.
- Salesforce component now supports limits, recent items, approvals and composite API
- Dumping Camel routes as XML now includes custom namespaces which are at xpath expressions etc. Likewise updating Camel routes from XML can now include namespaces which will be associated on xpath expressions.
RouteIdFactorywhich can auto assign route ids based on the consumer endpoints to use more sensitible names, instead of route1, route2, etc.
skipfunction to Simple language
- Upgraded to Jetty 9.3 (Jetty 9.2 still supported for Karaf 4.0.x users)
RouteBuilderauto-configuration can now be disabled from Camel CDI configuration
- Camel contexts automatic start can now be disabled from Camel CDI configuration
- Camel CDI now provides support for
- Asynchronous support for CXF JAX-RS producers has been added
- The JSonPath language now supports Map and List types and POJOs as well. For POJOs you need to have Jackson on the classpath.
- Data Format which marshal to JSon or XML now set the content-type header to application/json or application/xml appropriately.
- The Kafka component can now store offset state offline (stateRepository) to preserve this information and be able to resume from previous offset.
- The Kafka component has been improved to be easier to configure and use. Notice there is a backwards incompatible change so users need to migrate.
- A topic based idempotent repository that is Kafka based for the Idempotent Consumer EIP
- The Kafka component will automatic type convert the message body to the type specified by the configured serializer (is string by default) when sending to kafka. You can also now configure key and partitionKey in the endpoint uri, instead of having to specify as headers.
- The Kafka consumer will now auto commit on stop to ensure the broker has the latest offset commit. The option
autoCommitOnStopcan be configured to be sync,async or none.
- Added easy predicate parser to JSonPath to more easily define simple predicates without using the more complex jsonpath notation with all the symbols
- The Box component has been migrated to use the Box v2 Java API as the old v1 API is going to be shutdown from summer 2017
- Examples overview now generate from the source code to ensure its up to date
- Added declarative Transformer and Validator which performs transformation/validation according to the data type information declared on a route by inputType and/or outputType. There’re a few examples demonstrates this feature: camel-example-transformer-blueprint, camel-example-transformer-cdi, camel-example-transformer-demo, and camel-example-validator-spring-boot
- Added query support for JPA Producer
The following issues have been fixed
- Fixed starting Camel on Oracle JDK 1.8.0_19 or lower, which would throw an UnsupportedOperationException
- Fixed running
mvn camel:runwhen using OSGi Blueprint
- Fixed Hystrix EIP to also execute fallback if execution was rejected or short-circuited or other reasons from Hystrix.
- Fixed Hystrix EIP race condition when timeout was hit and fallback is executed could let to Camel Exchange having wrong caused exception.
- Fixed adding new routes to running CamelContext and if the new routes would fail to startup, then before these routes would “hang around”. Now only succesful started routes are added.
- Adding or removing routes that starts from Undertow no longer restart the entire HTTP server
- VM endpoint should prepare exchange with the CamelContext from the consumer and not from cached endpoint which can be different
- Fixed a bug when using Rest DSL with SERVLET could cause a java.io.IOException: Stream closed exception when using Bean component in the route.
- Fixed an issue when using
pipelinein Java DSL not setting up the EIP correctly which could lead to runtime route not as intended.
- Fixed Dropbox to use Stream caching to avoid reading entire file into memory so Camel can process big files
toDissue with splitting uris when RAW values had + sign
- Fixed adviceWith may behave differently when using multiple advices in the same order and you would advice on the same nodes.
- Fixed camel-zipkin to be able to startup and work with Camel XML
- Fixed FTP2 readLock=changed not working (when fastFileExists=false) if no sub folder was specified as starting directory.
- Fixed Simple language when using indexing with a nested function
- Fixed issue with
CamelContextinjected and its lifecycle managed by
- Fixed Netty double buffer release leak in Netty4 and Netty4 HTTP
- The groovy DSL from camel-groovy has been moved into its own camel-groovy-dsl module. The camel-groovy now only contains the Camel Language
- Camel-spring-LDAP now uses
java.util.function.BiFunction<L, Q, S>instead of
- The deprecated APIs from camel-spring-boot has been removed as part of upgrading and supporting Spring Boot 1.5.x
CamelContextis deprecated and returns null. The embedded HTML documentation in all the Camel components has been removed as they are not in use/maintained, and the JSon schema is the actual information. Use the camel-catalog for component documentation where you can get all the documentation in both ascii doc and html format.
- camel-mongodb-gridf schema has been renamed from *gridfs* to *mongodb-gridfs* to avoid confusion.
- The commands-core has the Catalog commands removed
- The org.apache.camel.spring.boot.FatJarRouter has been removed, just use regular
RouteBuilderclasses in Spring Boot applications.
- The Kafka endpoint option
seekToBeginning=trueshould be migrated to
- The Kafka endpoint option bridgeEndpoint has moved from endpoint to the KafkaConfiguration class so all options are together.
- The Kafka component has been improved to be easier to configure and use. Notice there is a backwards incompatible change so users need to migrate. The kafka uri is changed from kafka:brokers to kafka:topic. So you need to specify the topic name in the context-path and the brokers as parameters, eg before
- The Infinispan uri syntax has changed from infinispan:hostName?options to infinispan:cacheName?options
Important changes to consider when upgrading
- camel-spring-dm has been disabled from the karaf features file so users cannot install it out of the box as it does not work properly. camel-spring-dm has been deprecated for a long time and users are encouraged to use osgi blueprint instead. The JAR is still shipped and can be installed manually but then you are on your own. The JAR will be removed completed in a future release.
- Groovy DSL and Scala DSL is deprecated and planned to be moved to Camel Extra and not distributed out of the box in the future.
- Camel now uses Karaf 4.x API and therefore not possible to run on older Karaf versions.
camel-blueprintchanged startup behavior to start on Blueprint.CREATED event which would be more
correctway of startup instead of Blueprint.REGISTERED as before.
- camel-spring-boot now don’t include prototype scoped beans when auto scanning for RouteBuilder instances, which is how camel-spring works. You can turn this back using the includeNonSingletons option.
- camel-spring-javaconfig removed from Karaf features as it was not really supported in OSGi/Karaf.
- camel spring-boot shell commands have been removed as spring-boot shell has been deprecated in spring-boot.
- camel-mongodb-gridf schema has been renamed from gridfs to mongodb-gridfs to avoid confusion.
- camel-box has been migrated to use box v2 api so there may be some migration needed as the old camel-box component was using box v1 api
- The JSon schema from camel-catalog have changed to use boolean, integer and numeric values when applicable instead of using string values for everything.
- The camel-catalog Karaf commands has been removed
Getting the Binaries
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>2.19.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 the
camel-spring-boot-dependencies Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-spring-boot-dependencies</artifactId> <version>2.19.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>
Binary distribution contains all the artifacts Apache Camel project distributes in binary form
|Description||Download Link||PGP Signature file of download|
Source distribution contains all the artifacts Apache Camel project distributes in source form
|Description||Download Link||PGP Signature file of download|
Git tag checkout
Release is tagged with
camel-2.19.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-2.19.0
Here is a list of all the issues that have been resolved for this release
- camel-grpc doesn't terminate channel when producer stops
- Don't allow Salesforce HTTP client to stop with outstanding requests
- Don't return null for getErrors in SalesforceException
- camel-reactive-streams - Cannot create service in spring-boot
- OpenTracing trace context should cope with Hystrix using separate thread
- camel-jpa consumer fails to poll after database connection is lost
- CoAP component starts redundant server instance
- Integration tests for camel-restdsl-swagger-plugin fail on JDK 9
- camel-zookeeper-master - RAW() and child endpoint issue
- ClassNotFoundException may silently be ignored in InProducer
- ConsumerTemplate - If cache is full then polling consumer should be stopped to not leak resources
- camel-http4 - Unable to configure https4 properties in spring-boot
- Timer consumer - Should call start/stop of the processor
- Remove deprecated SpanManager from camel-opentracing
- camel-swagger-java - Should use guava 20 and not 19
- camel-twitter - The default delay is not used
- camel-catalog - asEndpointUri to support connectors/component with no context-path part
- Verifier should support exclusion of properties in option groups
- Route from kafka topic to another kafka topic issue
- Service Call - XML configuration of static servers called servers instead of server
- Service Call - Allow to configure static server list from a property placholder
- SolrParams are not honored when sending SolrInputDocument.
- REST DSL Swagger generator default generated class/package names
- Service Call : add a spi for component to provide a custom expression to build the camel uri
- Include Camel name in spring boot health check
- Add @Generated annotation to code generated by SpringBootAutoConfigurationMojo
- Add @Generated annotation Salesforce generated code
- Add @Generated annotation in REST DSL Swagger generated code
- Service Call : allow to use properties to further customize the underlying camel component used to implement service-call concepts
- camel-ssh - Allow to use message headers for username/password
- camel-reactive-streams: too many backpressure strategies
- Add support for VPC instances
- Data format - Marshal and unmarshal should eager start their data formats
New Feature (2)
- Create PubNub component
- camel-protobuf component improvements
- Create a Maven plugin that creates REST DSL source code from Swagger specification
- Service Call - Some unused code in camel-core
- Upgrade zipkin
- Remove camel-scr-starter spring boot module
- Checkstyle errors in camel-package-maven-plugin
- Replace gmaven with gmavenplus Maven plugin
- Place Eclipse workspace setup in camel-etc in a profile
- Java 9 - camel-restdsl-swagger-plugin fails integration test and camel-example-kotlin cannot compile
- Create camel-example-swagger-spring-boot
- Component docs - ascii doc warns
- camel-ignite is removed from readme on each full build
- Component docs - Fix broken links on github
- itest - spring-boot fails for camel-hbase
- camel-protobuf - itest starts to fail again
- camel-undertow-starter - fails test