...
- The MBean names registered by Camel JMX no longer include the hostname in the
context
part, eg beforecontext=myHost/myCamelId
and now aftercontext=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 tobeanRef
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. - Configuring Data Formats in XML attributes now supports reference lookup using the # syntax, eg
<jaxb xmlStreamWriterWrapper="#myWriterWrapper" ..>
- 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 aBeanRowMapper
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.
JndiRegistry
now implements all the find methods.- VM component now supports
multipleConsumers=true
across deployment units. - Added
@PreConsumed
to JPA consumer. - Added CamelFileName header support to the HDFS producer
- Like as
JpaConsumer
now alsoJpaProducer
of the JPA component supports theCamelEntityManager
header. - Restlet consumer now supports returning custom headers as HTTP headers from the Camel Message.
- Spring Java Config
CamelConfiguration
now automagically detects allRouteBuilder
instances registered in the Spring context ifCamelConfiguration#routes
method is not overridden. - Added support for transferring custom headers with RabbitMQ component.
- PGPDataFormat enables stream cache during unmarshaling.
FileIdempotentRepository
now creates necessary parent directories together with the new repository file.- Properties component and property placeholder will now ignore non existing JVM and environment options as well if
ignoreMissingLocation
is set totrue
. - Improved Stream consumer to enrich the Message with headers about current index / completion flag.
- Added
@BeanInject
to inject beans (obtained from the Registry) in your beans such asRouteBuilder
classes. - Polished the Karaf commands to output tables sorted and auto calculated width, so the data is formatted nicely.
- Introduced
UnitOfWorkFactory
to allow end users to use customUnitOfWork
implementations created by the factory. - Doing request/reply over JMS allows per individual message
requestTimeout
value by specifying the timeout value in the"CamelJmsRequestTimeout"
header. - Quartz and Quartz2 components now enlist the quartz scheduler by default in JMX, unless configured to be disabled.
- Twitter Component supports to set proxy.
- Netty HTTP consumer now remembers the raw (not decoded) value of URI query in the "
CamelHttpRawQuery
" header. - Bean Validator component can be now configured to use custom
ValidationProviderResolver
(CAMEL-7162) - TypeConverterRegistry exposes more information in JMX and allows to browse all the registered type converters.
- Bean Validator component is now shipped with the optional OSGi-friendly
HibernateValidationProviderResolver
(CAMEL-7168) - 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.
- Bean Validator component now automatically uses OSGi-friendly
ValidationProviderResolver
if deployed in the OSGi environment (CAMEL-7212) - Threads DSL thread pool options and
executorServiceRef
option are now mutually exclusive. (CAMEL-7250)
Fixed Issues
- Fixed an
ArrayIndexOutOfBoundsException
with Message History when using SEDA - Fixed
requestTimeout
on Netty not triggering when we have received message. - Fixed Parameter Binding Annotations on boolean types to evaluate as Predicate instead of Expression
- Fixed using File consumer with
delete=true&readLock=fileLock
not being able to delete the file on Windows. - Fixed Throttler to honor time slots after period expires (eg so it works consistently and as expected).
- Fixed getting JMSXUserID property when consuming from ActiveMQ
- Fixed interceptFrom to support property placeholders
- Fixed a race condition in initializing
SSLContext
in Netty and Netty HTTP - 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 so you can configure Stomp endpoints using URIs
- Fixed memory leak when using Language component with
camel-script
languages and havingcontentCache=false
- Fixed Error Handler may log at
WARN
level "Cannot determine current route from Exchange" when using Splitter - Fixed
camel-fop
to work in Apache Karaf and ServiceMix - Fixed HDFS producer to use the configured UuidGenerator when generating split file names to avoid filename collisions
- Fixed
JpaProducer
andJpaConsumer
of the JPA component to not share/reuse the sameEntityManager
object which could cause problems if this would occur in the context of multiple/different threads. - Fixed HTTP4 to support multiple custom component names in use, each configured using different
SSLContext
. - Fixed Content Based Router using method call's as Predicates if threw an exception, the Content Based Router will call next predicate before triggering Error Handler.
- Fixed Netty HTTP producer with query parameters may use wrong parameters from a previous call.
- Fixed Netty producer may cause
NullPointerException
inmessageReceived
in client handler, if aChannel
was destroyed from the producer pool. - Fixed File and FTP consumer(s) when
idempotent=true
could not detect changed file(s) as a new file, but would regard the file as idempotent. - Fixed Stream consumer reading a file using
groupLines
would not read last group of message if there was not enough lines to hit the threshold. - Fixed deleting the done file if File or FTP consumer rollback and the
moveFailed
option is in use. - Fixed avro data format in OSGi not being able to load schema classes.
- 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 multipleCsvDataFormat
objects are concurrently in use. - Fixed camel-script may return result from previous evaluation instead of result from current exchange.
- Fixed
ThreadsProcessor
to resolveRejectedPolicy
from the referencedThreadPoolProfile
(CAMEL-7240)
...