This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Child pages
  • Camel 2.11.0 Release
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 157 Next »

Camel 2.11.0 release (currently in progress)

Unknown macro: {div}

Unknown macro: {div}

New and Noteworthy

Welcome to the 2.11.0 release with approximately XXX issues resolved - including new features, improvements, and bug fixes, such as:

  • Added Binding support, so it is easy to combine things like a Data Format to an Endpoint for easier composition of routes.
  • Added support for SOAP 1.2 in SOAP data format.
  • Cache operation for add/update now supports expiry headers to control time to live/idle/eternal.
  • Added allowNullBody option to JMS to configure whether sending messages with no body is allowed.
  • Added connectOnStartup option to HDFS to allow to connect on demand, to avoid having Hadoop block for long time connecting to the HDFS cluster, as it has a hardcoded 15 minute retry mechanism.
  • Added support for daily and weekly trends to Twitter component.
  • The Camel Maven Archetypes now generates projects without any license headers.
  • Added 'rejectOld' option to the Resequencer to prevent out of order messages from being delivered after capacity/timeout events occur
  • Further optimized XPath under concurrent load, and as well ensured resources are cleaned up eagerly
  • Added options allowNullBody and readLockMinLength to the File and FTP components.
  • Made changed read lock strategy on FTP go faster (eg when the FTP server has a lot of files in the directory) if you enable the fastExistsCheck=true option as well. Notice that some FTP server may not support this.
  • HL7 moves to HAPI 2.0 and supports using a dedicated Parser instance in the HL7 MLLP codec and DataFormat. Added "Terser" language and expression to be able to extract fields from a parsed message. HL7 now uses Apache Mina 2.x.
  • Add an option HttpMethodRestrict to restrict HTTP method in Jetty and SERVLET
  • Add support for selection of Direct-VM consumers by using ant-like path expression.
  • The POJO Producing, and POJO Consuming with @Consume, @Produce, @EndpointInject now supports a new {{property} attribute to get the endpoint configuration from a bean property (eg using a getter method); this allows you to configure this on the bean using conventional bean configuration.
  • Testing with camel-test-blueprint on Windows no longer tries to cleanup after testing taking up 5 seconds and logging WARNs.
  • The File, and FTP components now support fileExist=Move option to move any existing files before writing a file.
  • Added option loadStatisticsEnabled on Camel JMX to allow to disable load statistics if not needed (avoids a background thread being in use, to calculate the load stats).
  • Enabled "lazy connections" for XMPP providers via the testConnectionOnStartup option
  • Added a connection monitor to detect and fix dropped XMPP consumer connections at configurable connectionPollDelay intervals
  • Added an org.apache.camel.builder.ExchangeBuilder to build the Exchange using a builder pattern.
  • The Camel Run Maven Goal can now run CDI applications.
  • The Camel CDI component has improved a lot.
  • Added option allowRedeliveryWhileStopping to error handlers to control if redelivery is allowed during stopping/shutting down Camel or the route(s). Turning this option false allows to stop quicker by rejecting redelivery attempts.
  • Added support for specifying user info in Camel Endpoint urls, which contains the @ sign; now the @ sign can be given as is; without being encoded to %40.
  • Added robust connection support for JMX. Optional testConnectionOnStartup allows a JMX consumer to attach to a JMX server that becomes available after the JMX endpoint starts; reconnectOnConnectionFailure enables re-connection of failed JMX connections.
  • JAXB and SOAP data format now supports controlling namespace prefix mappings when marshalling (eg to avoid prefixes such as ns2, ns3, ns4 etc.)
  • Added support for using raw uris when Components create Endpoints. This gives component writers full power in case their component has special syntax/notation for endpoint uri configurations.
  • EIPs configured with custom AggregationStrategy will now strict check the custom strategy exists in the Registry and no longer fallback and use a default strategy if not.
  • Camel now logs on shutdown if any thread pools hasn't been properly shutdown, and will shutdown them as fail safe (can only be done for the thread pools Camel manages).
  • The buffer size of Stream caching is now configurable.
  • Improved startup performance.
  • Added JMS URI option messageListenerContainerFactoryRef which allows you to specify a MessageListenerContainerFactory to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages.
  • MQTT producer now leverages the Asynchronous Routing Engine
  • The Netty producer scales up and down much better by leveraging a channel pool.
  • Added new Camel Maven Archetypes for creating Camel and Groovy applications.
  • Camel now injects CamelContext on Language and DataFormat that implements CamelContextAware
  • Thread pools in Camel with maximumQueueSize of 0 or negative will now not use a worker queue but do direct hand-over to thread instead.
  • Simple unary operators for inc and dec must now have function on left hand side, to be parsed as unary function. Otherwise its now regarded as literal.
  • Custom assigned id's on Camel Routes is now validated on starting the routes, that they must be unique within the same CamelContext.
  • Added AbstractListAggregationStrategy abstract class to make it easier to aggregate into a List<V> using a custom AggregationStrategy.
  • EIPs which support using AggregationStrategy now control the lifecycle of the strategy; allowing end users to do custom logic in the start/stop methods of their strategy implementation.
  • Added option includeSentJMSMessageID to JMS to allow to enrich Camel Message with the actual JMSMessageID for the sent message. Can be used by end users for logging purpose etc.
  • Added option allowShortLines and ignoreExtraColumns to Flatpack data format.
  • Mail consumer now supports using search terms to filter mails by terms such as subject, from, body, sent date etc.
  • The cached script file in the Language component can now be cleared via JMX.
  • improved the karaf context-info command by adding a verbose mode to view endpoints list (now hidden by default) and adding stats on the number of active/inactive routes
  • Added support for UpdateList, DeleteList and ExecutorType to MyBatis component.
  • Added support for easier configuration of using concurrent message listener consumer when doing request/reply over JMS, by leveraging the existing concurrentConsumers and maxConcurrentConsumers options.
  • Improved the SMPP consumer to expose more data by receiving a DeliverSM message.
  • Camels property placeholders can now be used in route id / node id's in the routes in XML and Java DSLs, eg <route id="coolName">
  • The thread name pattern can easily be configured on <camelContext> with the new threadNamePattern attribute
  • Camel now validates SEDA and VM endpoints using same queue name, that if any queue size is in use, that size must match. As well Camel logs at INFO level when starting up the queues and the sizes. This allows end users to easily spot any issues if mistakenly using different queue sizes for the same queue names.
  • Added JMX operations to throughput logger so you can get stats and also reset the stats at runtime.
  • Added ACL support on the [AWS-S3] component.

Fixed issues

  • Fixed RoutePolicy used from Spring XML with routePolicyRef may not invoke all callbacks on the policy.
  • Fixed MINA consumer to force disconnect upon timeout when doing request/reply, as late replies may cause side effects otherwise.
  • Fixed Simple language with empty quoted literals in predicates, so you can compare against empty strings.
  • Fixed SOAP data format to set SOAP 1.1 namespace when marhsalling faults.
  • Fixed SEDA producer to send to the right BlockingQueue being attached on the SEDA endpoint so that the sent messages don't get lost.
  • Fixed using sendEmptyMessageWhenIdle=true on a batch consumer such as File now working with Aggregate EIP when using completionFromBatchConsumer
  • Fixed MockEndpoint.expectedBodiesReceivedInAnyOrder to allow asserting on multiple arrival of the same/equal bodies.
  • Fixed MyBatis to demarcate the running transactions properly while reading/writing from/to database.
  • Fixed Jetty, HTTP, HTTP4, and AHC http components not working in bridge mode if content path have spaces
  • Fixed the CXF fallback convertor issue which camel will unregister it when the converter return null.
  • Fixed the issue that File2 endpoints on windows without volume name in the path url.
  • Fixed the issue of unmarshaling pgp messages encrypted with ElGamal.
  • Fixed random Load Balancer to be even spread (before was a little less likely to pick the 1st)
  • Fixed Timer to not fire during starting CamelContext
  • Fixed XMLSecurity DataFormat to enable retrieval of password-protected private keys for asymmetric decryption
  • Fixed Exception Clause using maximumRedeliveries(-1) may be wrongly inherited by another onException during a redelivery process.
  • Fixed logging Error Handler to use configured logging level.
  • Fixed issue when using multiple RouteBuilder with the Java DSL should have the Exception Clause being scoped per RouteBuilder instance.
  • Fixed issue with restarting a SEDA consumer would not stop previous used thread pool.
  • Fixed issue when running low on memory and doing request/reply over JMS may GC producer, causing a new producer to be created, and leaving a message listener running from the previous producer.
  • Fixed issue with Try Catch Finally should clear redelivery exhaust state when catching exception in doCatch.
  • Fixed potential NPE in MQTT producer, if a connection has been disconnected, and sending fails.
  • Unhandled exceptions occurred during routing from SMPP routes is now propagated back to the SMPP library to deal with.
  • Fixed Restlet parsing of last modification date header to use RFC-2822 date pattern.
  • Fixed Aggregator EIP when using completion size expression and fixed size together not working as expected.
  • Fixed Crypto to close streams after usage, which otherwise could prevent deleting files on Windows, which tend to lock files if a stream is open.
  • Fixed issue with Groovy language in OSGi
  • Fixed issue with localWorkDirectory option on FTP not using the optimization to try to rename the work file when routing to a File endpoint.
  • Fixed SMPP to use the right data coding by using Octet unspecified (8-bit binary) and using the specified alphabet from the exchange, if provided.
  • Fixed issue with configuring Jetty component using a name other than "jetty".
  • Fixed issue with request/reply over JMS where a route is used on "the other end" to process the request and send back the correlated reply message; where a Camel route is used which has only 1 output, which can lead to no reply message being sent.
  • Fixed regression in AWS-SQS by updating the existing queue without any attributes.
  • Fixed issue with Using PropertyPlaceholder in Expressions in routes which are using <transacted> or <policy>.
  • Fixed issue with Splitter which swallow the IOException catched by the underlying Scanner.
  • Fixed issue with Splitter where tokenizeXML would not split XML messages containing nodes with namespace prefixes.

New Enterprise Integration Patterns

New Camel Karaf Command

New Components

DSL Changes

  • Added LoggingErrorHandler fluent builder to Scala DSL.

New Annotations

New Data Formats

  • camel-xmlrpc - support to marshal and unmarshal the request and response of xmlrpc.

New Languages

  • VTD-XML - for fast and efficient XPath evaluation/splitting using the VTD-XML Library. camel-vtdxml hosted at Camel Extra

New Examples

  • ActiveMQ Camel Tomcat example shows how to embed Apache ActiveMQ and Camel in a web application running on Apache Tomcat.

New Tutorials

API changes/breaking

  • HL7 upgraded to now use Apache Mina 2.x.
  • Renamed org.apache.camel.component.hbase.HBaseContats to org.apache.camel.component.hbase.HBaseConstants
  • Added getter/setter methods for loadStatisticsEnabled on org.apache.camel.spi.ManagementStrategy
  • Added shutdownGraceful, and awaitTermination methods to ExecutorServiceManager to make it easier to shutdown a thread pool gracefully waiting for its tasks to complete.
  • Added method useRawUri() to org.apache.camel.Component to allow Components to use raw uri when creating endpoints. (by default the uri has been encoded prior to creation).
  • Added method newThread to org.apache.camel.spi.ExecutorServiceManager to create a new thread without using a thread pool.

Internal/Non API refactorings that may affect users

  • The Camel Test Kit provides a default Properties component out of the box; which mean using addComponent("properties", ...) is no longer needed; instead get the component using getComponent("properties") and configure the component instead.
  • Minor adjustments to org.apache.camel.builder.ErrorHandlerBuilder.
  • LRUCache will attempt to stop service on eviction of entry.
  • Removed org.apache.camel.model.NodeFactory as its no longer applicable.
  • Added getCamelContext() methods to ProducerTemplate, and ConsumerTemplate

Known Issues

  • The Tracer may not output all details for some situations, such as when using onCompletion or intercept, etc.
  • The project cannot fully build the site using Maven (e.g. running "mvn site"). There is no plan to fix this, as the project does not use maven site.
  • JBoss 7 may log a WARNing when running Camel as a WAR file.

Dependency Upgrades

  • Aries Blueprint 0.3 to 1.0.0
  • Async Http Client 1.7.5 to 1.7.8
  • Avro 1.6.2 to 1.7.2
  • AWS 1.3.10 to 1.3.14
  • Axiom 1.2.10 to 1.2.12
  • BeanIO 2.0.0 to 2.0.2
  • Commons Exec 1.0.1 to 1.1
  • ConcurrentLinkedHashMap 1.2 to 1.3.1
  • Ehcache 2.5.1 to 2.6.0
  • Groovy 1.8.6 to 2.0.5
  • GSon 2.1 to 2.2.2
  • Hazelcast 2.0.2 to 2.4
  • HTTP Client 4.1.3 to 4.2.2
  • Icu4j 4.0.1 to
  • Jackson 1.9.7 to 1.9.10
  • Jaxen 1.1.3 to 1.1.4
  • JClouds 1.4.0 to 1.5.1
  • Jettison 1.3.1 to 1.3.2
  • Jetty 7.5.4 to 7.6.8
  • JRuby 1.6.7 to 1.7.0
  • JT400 6.0 to 6.7
  • Krati 0.4.5 to 0.4.6
  • LevelDBJNI 1.2 to 1.3
  • Lucene 3.6.0 to 3.6.1
  • Mina 2.0.4 to 2.0.7
  • MongoDB Java Driver 2.7.3 to 2.9.1
  • MQTTClient 1.2 to 1.4
  • Netty 3.5.1 to 3.5.11
  • Ognl bundle 3.0.4_1 to 3.0.5_1
  • OSGi 4.2.0 to 4.3.0
  • Pax Logging 1.5.3 to 1.6.10
  • QPid 0.16 to 0.18
  • Quartz 1.8.5 to 1.8.6
  • Restlet 2.0.14 to 2.0.15
  • Saxon to
  • Scala 2.9.1 to 2.9.2
  • Shiro 1.2.0 to 1.2.1
  • SLF4J 1.6.6 to 1.7.2
  • Solr 3.6.0 to 3.6.1
  • Spring Batch 2.1.8 to 2.1.9
  • Spring Framework 3.1.1 to 3.1.2
  • Spring Integration 2.1.2 to 2.1.4
  • Spring Security 3.1.0 to 3.1.3
  • SSHD 0.6.0 to 0.8.0
  • TestNG 6.0.1 to 6.8
  • Woodstox 4.1.2 to 4.1.3
  • XStream 1.4.2 to 1.4.3

Important changes to consider when upgrading

  • camel-mina2 now uses OrderedThreadPoolExecutor by default. There is a new option orderedThreadPoolExecutor you can configure it to false to revert back to unordered if needed. If using SSL etc. then ordered is required to be used.
  • camel-netty now uses OrderedMemoryAwareThreadPoolExecutor by default. There is a new option orderedThreadPoolExecutor you can configure it to false to revert back to unordered if needed. If using SSL etc. then ordered is required to be used.
  • The default value of the delay option on Timer has been changed from 0 to 1000
  • The default value of the convertLFtoCR option of the HL7 MLLP codec has been changed from true to false. Likewise, the HL7 DataFormat and TypeConverter do not perform this conversion anymore.
  • The Simple language has limited its support for the escape character to only new line, carriage return and tab characters. This makes it easier to use back-slash characters in the Simple language without double escaping etc.
  • camel-netty now requires commons-pool as dependency.
  • The maximumQueueSize of Thread Pools and Thread Pool Profiles with values 0 or negative now means disable the worker queue, and use direct-handover. If you want an unbounded queue size, then set the maximumQueueSize to Integer.MAX_VALUE which was what the previous code did.
  • Custom assigned id's on Camel Routes is now validated on starting the routes, that they must be unique within the same CamelContext.
  • camel-blueprint now requires Apache Aries 1.0, and OSGi 4.3.0.
  • Removed @deprecated classes form camel-spring in the org.apache.camel.component package which was causing split-package issue with OSGi. Component authors who are using these @deprecated classes, should migrate to use equivalent classes from camel-core in the same package.
  • The default Spring version is upgraded from 3.0.7 to 3.1.3 out of the box.
  • Camel now validates SEDA and VM endpoints using same queue name, that if any queue size is in use, that size must match. As well Camel logs at INFO level when starting up the queues and the sizes. This allows end users to easily spot any issues if mistakenly using different queue sizes for the same queue names.


  • Maven 3.0.2 or better is required to build the Source
  • Apache Karaf 2.3.0 or better is required for deploying Camel 2.11 onwards, when using Apache Karaf.

Getting the Distributions

Binary Distributions


Download Link

PGP Signature file of download

Windows Distribution

Unix/Linux/Cygwin Distribution



Source Distributions


Download Link

PGP Signature file of download

Source Distribution

  • No labels