Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the asciidoc in the repository:
https://github.com/apache/camel/blob/master/README.md
https://github.com/apache/camel/blob/master/components/readme.adoc

Camel 2.13.0 release

New and Noteworthy

Using <camelContext> in Spring will now shutdown <camelContext> eager by default. This ensure a cleaner shutdown of Camel, as dependent <bean> are not shutdown at this moment. The <bean> will then be shutdown after <camelContext>. There is a new attribute shutdownEager on <camelContext> to turn this off, and use the old behavior.

The MBean names registered by Camel JMX no longer include the hostname in the context part, eg before context=myHost/myCamelId and now after context=myCamelId. Having the hostname in the MBean name does not bring much value, and in fact makes things more complicated as the mbean name changes depending on the host running Camel.

MBean naming in OSGi cleaned up to use simpler naming with symbolicName. Before we could have MBean names with duplicate bundle ids such as context=114-114-camel-6, which now is using the symbolic name instead, context=MyApplication.

When using multiple OSGi Blueprint <cm:property-placeholder>'s then Camel now favors using non-default placeholders, or the last property-placeholder defined in the Blueprint XML file. This allows for example to define default properties in one placeholder, and override these values in other placeholders.

FTP consumer allow to download a single named file without using the FTP LIST command. This allows to download a known file from a FTP server even when the user account does not have permission to do FTP LIST command.

FTP consumer allow to ignore file not found or insufficient file permission errors.

Data Format using marshal now leverages Stream caching out of the box if enabled, which allows to marshal big streams and spool to disk, instead of being pure in-memory based.

Improved using Bean when the bean is looked up in the Registry, when using concurrent processing in the route.

Added cache option to beanRef and <bean> in the DSL. This avoids looking up the Bean from the Registry on each usage; this can safely be done for singleton beans.

JDBC component now also support outputType to specify the expected output as either a List or single Object. As well allow to map to a bean using a BeanRowMapper to control the mapping of ROW names to bean properties.

Both Quartz as well as Quartz2 based ScheduledRoutePolicy has been improved to better support cluster setups (e.g. to not schedule jobs being already scheduled through another node inside a given cluster).

Reduced the work the Aggregate EIP does while holding a lock during aggregation, which can lead to improved performance in some use-cases.

AMQP has been updated to QPid 0.24 and has been tested using AMQP 1.0.

Allow to turn off useOriginalMessage (camelContext.setAllowUseOriginalMessage) which avoids a defensive copy of the incoming original message, which can improve performance; in situations where access to the original message is not needed.

Fixed using Recipient List, Routing Slip calling another route which is configured with NoErrorHandler, and an exception occurred in that route, would be propagated back as not-exhausted, allow the caller route to have its error handler react on the exception.

Fixed Quartz and exception was thrown when scheduling a job, would affect during shutdown, assuming the job was still in progress, and not shutdown the Quartz scheduler.

Fixed JMX when using custom beans in routes with @ManagedResource to expose JMX attributes/operations to not include Camel standard attributes/operations from its processors, which would be shown as unavailable in JMX consoles.

Fixed Quartz2 simple trigger repeat count default value not working causing the trigger to only fire once, instead of forever.

Fixed JMS with a JMSRepyTo header using a topic, was mistakenly used as a queue instead.

Fixed CSV to not modify the properties of the strategy constants declared by org.apache.commons.csv.CSVStrategy which would cause side effects when multiple CsvDataFormat objects are concurrently in use.

Fixed camel-script may return result from previous evaluation instead of result from current exchange.

Fixed ThreadsProcessor to resolve RejectedPolicy from the referenced ThreadPoolProfile (CAMEL-7240)

Fixed XmlJsonelementName and arrayName properties when setting them from the xmljson(Map) DSL.

The MBean names registered by Camel JMX no longer include the hostname in the context part, eg before context=myHost/myCamelId and now after context=myCamelId. Having the hostname in the MBean name does not bring much value, and in fact makes things more complicated as the mbean name changes depending on the host running Camel. There is an option includeHostName that can be configure as true to preserve the old behavior.

MBean naming in OSGi cleaned up to use simpler naming with symbolicName. Before we could have MBean names with duplicate bundle ids such as context=114-114-camel-6, which now is using the symbolic name instead, context=MyApplication.

Added beforeAddRoutes and afterAddRoutes to org.apache.camel.component.servletlistener.CamelContextLifecycle in ServletListener Component

The Language component now no longer caches the compiled script as that could cause side-effects. You can set cacheScript=true to enable the previous behavior if your script is safe to do so.

The default value of urlDecodeHeaders option on Netty HTTP has been changed from true to false.

When using <jmxAgent> in spring/blueprint then the createConnector attribute has changed default value from true to false (which is also the default in camel-core without spring/blueprint)

camel-cache no longer includes ehcache.xml out of the box. Instead the default configuration from ehcache is in use, if end user has not explicit configured a configuration file to be used.

camel-cdi upgraded from deltaspike 0.3 to 0.5 which may affect upgrades.

Java DSL when using onException.backOffMultiplier or onException.collisionAvoidancePercent/collisionAvoidanceFactor will automatic enable backoff/collision avoidance. Before you had to call useExponentialBackOff/useCollisionAvoidance as well. This is now aligned how errorHandler does the same.

changed default value of NoLocal from true to false in camel-sjms when creating consumer.

Important changes to consider when upgrading

Spring 3.1.x is no longer supported.

Using <camelContext> in Spring will now shutdown <camelContext> eager by default. This ensure a cleaner shutdown of Camel, as dependent <bean> are not shutdown at this moment. The <bean> will then be shutdown after <camelContext>. There is a new attribute shutdownEager on <camelContext> to turn this off, and use the old behavior.

If using groupedExchanges option on Aggregate EIP then the Exchanges is now stored on the message body as well. The old way of storing as a property is considered deprecated. See more details at Aggregate.

JMX Load statistics has been disabled by default. You can enable this by setting loadStatisticsEnabled=true in <jmxAgent>. See more details at Camel JMX.

Java 6 support is being deprecated and dropped from next release onwards.

The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using FireFox