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
andreadLockMinLength
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 thefastExistsCheck=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 optionfalse
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 aMessageListenerContainerFactory
to determine whatorg.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
onLanguage
andDataFormat
that implementsCamelContextAware
- 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 customAggregationStrategy
. - 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
andignoreExtraColumns
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
andExecutorType
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
andmaxConcurrentConsumers
options. - Improved the SMPP consumer to expose more data by receiving a
DeliverSM
message.
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 usingcompletionFromBatchConsumer
- 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 anotheronException
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 perRouteBuilder
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.
New Enterprise Integration Patterns
- ControlBus EIP
New Camel Karaf Command
New Components
- ControlBus Component - for easy management using a component supporting the ControlBus EIP
camel-cmis
- for integration of CMIS compliant content repositoriescamel-couchdb
- for integration with Apache CouchDBcamel-elasticsearch
- for ElasticSearch integrationcamel-sjms
- for "Springless" JMS integration[camel-neo4j]
- for talking to neo4j server from Camel.
DSL Changes
- Added LoggingErrorHandler fluent builder to Scala DSL.
New Annotations
New Data Formats
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
toorg.apache.camel.component.hbase.HBaseConstants
- Added getter/setter methods for loadStatisticsEnabled on
org.apache.camel.spi.ManagementStrategy
- Added
shutdownGraceful
, andawaitTermination
methods toExecutorServiceManager
to make it easier to shutdown a thread pool gracefully waiting for its tasks to complete. - Added method
useRawUri()
toorg.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
toorg.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 usinggetComponent("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.
Known Issues
- The Tracer may not output all details for some situations, such as when using
onCompletion
orintercept
, 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.7
- Axiom 1.2.10 to 1.2.12
- AWS 1.3.10 to 1.3.14
- 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.10
- 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
Important changes to consider when upgrading
camel-mina2
now usesOrderedThreadPoolExecutor
by default. There is a new optionorderedThreadPoolExecutor
you can configure it tofalse
to revert back to unordered if needed. If using SSL etc. then ordered is required to be used.camel-netty
now usesOrderedMemoryAwareThreadPoolExecutor
by default. There is a new optionorderedThreadPoolExecutor
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 from0
to1000
- The default value of the
convertLFtoCR
option of the HL7 MLLP codec has been changed fromtrue
tofalse
. 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 requirescommons-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 themaximumQueueSize
toInteger.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 theorg.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 fromcamel-core
in the same package. - The default Spring version is upgraded from 3.0.7 to 3.1.3 out of the box.
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.
Getting the Distributions
Binary Distributions
Description |
Download Link |
PGP Signature file of download |
---|---|---|
Windows Distribution |
||
Unix/Linux/Cygwin Distribution |
Source Distributions
Description |
Download Link |
PGP Signature file of download |
---|---|---|
Source Distribution |