h1. Camel 2.11.0 release (currently in progress)

{div:style=padding-right:20px;float:left;margin-left:-20px;}
!http://camel.apache.org/download.data/camel-box-v1.0-150x200.png!
{div}
{div:style=min-height:200px}
{div}

h2. 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|File2] and [FTP|FTP2] components.
* Made {{changed}} read lock strategy on [FTP|FTP2] 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|File2], and [FTP|FTP2] 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|Dead Letter Channel] 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 [Component]s create [Endpoint]s. This gives component writers full power in case their component has special syntax/notation for endpoint uri configurations.
* [EIP]s 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|Aggregator2] into a List<V> using a custom {{AggregationStrategy}}.
* [EIP]s 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|Flatpack DataFormat].
* [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|Using PropertyPlaceholder] 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|Camel JMX] operations to [throughput logger|Log] so you can get stats and also reset the stats at runtime.

h3. 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|File2] now working with [Aggregate|Aggregator2] 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|Aggregator2] 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|FTP2] not using the optimization to try to rename the work file when routing to a [File|File2] 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 [Expression]s 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.

h3. New [Enterprise Integration Patterns]

* [ControlBus] EIP

h3. New Camel Karaf Command

h3. New [Components]

* [ControlBus Component] - for easy management using a component supporting the [ControlBus] EIP
* {{[camel-cmis|cmis]}} - for integration of CMIS compliant content repositories
* {{[camel-couchdb|CouchDB]}} - for integration with [Apache CouchDB|http://couchdb.apache.org/]
* {{[camel-elasticsearch|ElasticSearch]}} - for [ElasticSearch|http://elasticsearch.org] integration
* {{[camel-sjms|sjms]}} - for "Springless" JMS integration
* {{[camel-neo4j|neo4j]}} - for talking to neo4j server from Camel.
* {{[camel-xmlrpc|xmlrpc]}} - for talking to xmlrpc server from Camel.

h3. DSL Changes

* Added LoggingErrorHandler fluent builder to Scala DSL.

h3. New Annotations

h3. New [Data Formats|Data Format]
* {{[camel-xmlrpc|xmlrpc]}} - support to marshal and unmarshal the request and response of xmlrpc.

h3. New [Languages]

* [VTD-XML] - for fast and efficient XPath evaluation/splitting using the VTD-XML Library. {{camel-vtdxml}} hosted at [Camel Extra|http://camel-extra.googlecode.com/]

h3. New [Examples]

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

h3. New [Tutorials]

h2. 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 [Component]s 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.

h2. Internal/Non API refactorings that may affect users

* The [Camel Test Kit|Testing] 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}}

h2. 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.

h2. 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 4.8.1.1
* 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 9.3.0.11 to 9.4.0.1
* 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

h2. 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|http://camel.apache.org/threading-model.html] and [Thread Pool Profiles|http://camel.apache.org/threading-model.html] 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.

h2. Notice

* 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.

h2. Getting the Distributions

h3. Binary Distributions

|| Description || Download Link || PGP Signature file of download ||
| Windows Distribution | [apache-camel-2.11.0.zip|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.11.0/apache-camel-2.11.0.zip] | [apache-camel-2.11.0.zip.asc|http://www.apache.org/dist/camel/apache-camel/2.11.0/apache-camel-2.11.0.zip.asc] |
| Unix/Linux/Cygwin Distribution | [apache-camel-2.11.0.tar.gz|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.11.0/apache-camel-2.11.0.tar.gz] | [apache-camel-2.11.0.tar.gz.asc|http://www.apache.org/dist/camel/apache-camel/2.11.0/apache-camel-2.11.0.tar.gz.asc] |

h3. Source Distributions

|| Description || Download Link || PGP Signature file of download ||
| Source Distribution | [apache-camel-2.11.0-src.zip|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.11.0/apache-camel-2.11.0-src.zip] | [apache-camel-2.11.0-src.zip.asc|http://www.apache.org/dist/camel/apache-camel/2.11.0/apache-camel-2.11.0-src.zip.asc] |