Property placeholders in for example endpoint uris is not natively supported in camel-core which means you no long need to use Spring for that. It works therefore in any environment as its provided out of the box in camel-core.

Property placeholders also works in the <CamelContext> when using Spring XML. Basically nearly all places where you enter text the property placeholder is supported.

Total overhaul of the Aggregator EIP, which now has better completion triggers, and supports pluggable repository. For example to use camel-hawtdb as persistent store. Also added support for recovery and transactional behavior when using camel-hawtdb.

Added ExchangeSentEvent to EventNotifier which contains time taken and is emitted when an Exchange is sent to an Endpoint. This allows end users to easily gather performance stats for Exchange send to endpoints.

Added disconnect option to MINA to close Mina session right after usage.

Jetty now supports to get the HttpServletRequest and HttpServletResponse from the Message header.

XPathBuilder now supports being used without an Exchange which allows you to use it in a custom/generic fashion.

XPath now supports using the JVM system property specifying a custom XPathFactory to be used. You can use this to switch from default to use e.g. Saxon.

XSLT now supports using <xsl:include> where the files is loaded from classpath, and being able to load relative according to the endpoint configured location. See the wiki page for details.

File, FTP added option eagerDeleteTargetFile to control the behavior when using tempFile whether or not to eagerly delete the target file or wait until last moment.

Reduced registering producers in JMX to prevent using too much memory and potentially registering short lived producers which didn't bring much value of being managed as well.

Added camel-http4 component using Apache HTTP Client 4.0.1. This can be used by early adaptors to try out the new Apache HTTP Client 4.x architecture.

pollEnrich now handover completions which means you can use the move like options from File or FTP component. For example to enrich with a file and have that file moved when the route completes.

Added @Attachments annotation to Bean binding.

Simple and Bean language now has a build in OGNL notation which allows you to reference from Map or List structures and as well to invoke methods in a OGNL like notation. See more details at Simple wiki page.

ProducerCache is now exposed for management in JMX which allows you to 'keep an eye on it' at runtime. This cache is used by certain EIP patterns.

Fixed polling Files or FTPs when recursive and idempotent is enabled, which could cause Camel to not pickup files in sibling folders with similar name to already consumed files.

Improved request/reply messaging over SEDA and VM endpoints to work properly with many endpoints (chained).

JPA component will now auto lookup EntityManagerFactory and TransactionManager from Registry to support convention over configuration. Then you do not any longer need to explicit configure this on the JpaComoponent. If auto lookup failed a WARN log is logged.

Fixed camel-spring having factory beans for ProducerTemplate and ConsumerTemplate set to non singleton, which caused it to create new instances. Obviously it should have been singleton as you want to reuse the template.

Fixed camel-spring when @Produce/@Consume/@EndpointInjected annotated was used on prototype scoped beans, to not register those annotated services to be closed in CamelContext. This caused Camel to keep references to these services even when the prototype was no longer in used. And causing Camel to eat memory.

Much friendlier syntax to configure time periods in endpoint uris, for example the Timer component. Or how often to poll from a File or FTP consumer.

Camel Http component will not consumer the message body when it parses the POST message with the content-type of "application/x-www-form-urlencoded", and it also honors the charset setting of the "content-type".

Now you can enable or disable gzip processing by setting the exchange property with name Exchange.SKIP_GZIP_ENCODING and value Boolean.True in Camel Http component.

Improved NodeList to String converter to include xml tags, attributes and whatnot, eg you get outputs such as <foo id="123">bar<year>2010</year></foo>.

Added continued option to Exception Clause so you can use it catch the exception and continue routing from the point of where the exception was thrown (Camel will continue to the next processor in the route graph).

API breaking

The Aggregate has been overhauled and thus you need to migrate you Camel application if you use it. See the Aggregate wiki page for which options it has you should use.

In MINA the header key MinaConsumer.HEADER_CLOSE_SESSION_WHEN_COMPLETE is moved to MinaConstants.MINA_CLOSE_SESSION_WHEN_COMPLETE

org.apache.camel.spi.PollingConsumerPollStrategy now returns a boolean in the begin method. Use true to accept to begin polling, and false to skip polling at this time.

A new method onInit has been added to org.apache.camel.spi.RoutePolicy.

Added method removeHeaders on the org.apache.camel.Message API.

getExecutorService/setExecutorService have been removed from DefaultComponent and DefaultEndpoint. You should use CamelContext.getExecutorServiceStrategy() which is the API for creating thread pools in Camel.

Changed Exception to Throwable on the org.apache.camel.spi.EventFactory and the various xxxEvent objects as Camel now catches Throwable on shutdown to ensure a more robust shutdown in case a Throwable was thrown.

Removed unused class org.apache.camel.spi.Provider.

Fixed spelling in the parallelProcessing option from the @RecipientList annotation.

GenericFile is no longer java.io.Serializable

Method adviceWith on RouteDefinition now requires CamelContext as first parameter.

Known Issues

The Tracer may not output all details for some situations such as when using onCompletion or intercept etc.

Not all Examples have ANT build.xml files to run the example using ANT.

If using camel-quartz in OSGi it may stop the scheduler if you update bundles with Camel applications using Quartz endpoints. See more details at this discussion.

There is a potential dead lock in the Aggregator when using timeout condition. See more at CAMEL-2824.

HawtDB has a bug in version 1.4 or older which prevents the filestore to free unused space. Version 1.5 fixes this.

Important changes to consider when upgrading

The Aggregator has been overhauled and thus you need to migrate you Camel application if you use it. See the Aggregator wiki page for which options it has you should use.

The ToAsync feature has been @deprecated. It will be replaced by a better asynchronous routing engine in the next Camel release.

The SEDA endpoint is now by default unbounded in size, where as before they had a default size of 1000.

camel-jetty has been upgraded to use Jetty 7.0.1 from 6.1.22. These two versions is much different as 7.x is moved to be hosted at Eclipse, which means all it package names has been renamed.

In camel-http some options in relation to authentication has been renamed to avoid clashing with using username and password as uri parameters, which can be common names to be used. Therefore if you have configured authentication on the HTTP endpoint you have to rename those options, and as well a authentication method (authMethod) must be provided as well (BASIC, DIGEST, NTML).

Camel will now shutdown routes in reverse order in which they where started.

The outbound Exchange from Splitter will now by default use the original Exchange (input to Splitter). To use the old behavior you can configure the Splitter to use UseLatestAggregationStrategy.

The camel-cxf component PAYLOAD mode has been improved to delegate all SOAP message parsing to CXF. The camel-cxf component now requires CXF 2.2.8 or newer.

XPath or working with XML. Camel now converters NodeList to String a bit differently as it now outputs the String including the XML tags, childtags, attributes etc. If using XPath you can use the text() function to grab only the text content.

The default charset which is used in camel converters can be set by using the System property with the key org.apache.camel.default.charset, if not set it will fallback to use UTF-8 by default.

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