Apache Camel helps developers implement "Enterprise Integration Patterns", a concept made famous first by Gregor Hohpe's Enterprise Integration Patterns book, and then expanded and improved by many other authors.
This and all the subsequent books provide an insight on how to write code in an efficient and standards-compliant way, without wasting resources or your (the developer's) time.
Apache Camel implements some of this patterns in its tools, allowing developers to write efficient and modern code for their applications.
The project itself was written using different programming languages, including Java, XML, Groovy, JavaScript, Ruby, SQL, Scala, PHP and Python.
Camel comes with a Domain Specific Language (DSL) for managing routes, errors, predicates, and expressions; and generally can be used as a can be used as a routing and mediation engine.
What is new in this release:
- Component, data format, language and eip documentation now included in the built component JARs. And Java API and JMX API to access that documentation. And APIs to explain an endpoint uri, eip configuration and what all those configured options mean. In other words the same level of complete documentation of your Camel apps at both design and runtime, accessible from Java / JMX and tooling.
- Component, data format, language and eip can now have associated label(s) which are used for grouping components into: core, database, messaging, http, rest, etc.
- The XML DSL schema now include documentation
- Provide Configurer for user to configure the CXF conduit and CXF destination from Java code
- Added a DelegateEndpoint interface into Camel API
- Support to setup the SslContextParameters in the camel-restlet component
- Java DSL - Should support nested choice in doTry .. doCatch
- MongoDb component now stores OIDs of the inserted records in the message header
- Recipient List now supports specifying custom Exchange Pattern in the endpoint ur's
- Type Converter to enum's is now case insensitive, so you can convert safely level=info to an enum with name Level.INFO etc.
- XSLT and Validation components now provides all their endpoint configurations in the endpoint, and not only in the component, making these components like any other components.
- Made the Camel Karaf Commands reusable by moving common code into a camel-commands-core module that SPI can extend and plugin Camel commands for other environments.
- Further hardening of the SJMS component.
- Rest DSL with embedded routes now supports onException, intercept etc in use for those embedded routes, just like any regular routes.
- Rest DSL now by default uses custom error message as-is without attempting to binding output (requires a HTTP error code of 300+ is set as a header)
- Camel Using PropertyPlaceholder now supports specifying a default value together with the key to lookup.
- Camel Using PropertyPlaceholder now supports not having to define a PropertiesComponent if all the placeholder keys has default values which are to be used (less configuration needed in those situations).
- Camel Using PropertyPlaceholder now supports 3rd party functions to lookup the property values, this allow end users to implement their own logic - we provide 3 out of the box functions to lookup values from OS environment variable, JVM system properties, or the service name idiom.
- RabbitMQ now pools Channels for the producer to avoid sharing same Channel among concurrent producers which are not recommended by RabbitMQ client.
- Camel commands is now reusable outside Apache Karaf as a base by the commands-core module.
- Camel commands using Jolokia for remote communication by the commands-jolokia module.
- More minor processors such as setHeader, removeHeader, removeHeaders and ditto for properties is now also enlisted in JMX under processors.
- Optimized usage of type conversion during routing reducing the number of attempts needed.
- Optimized CaseInsentiveMap used as message headers to use a single map instead of two and yield less memory overhead and performance
What is new in version 2.15.2:
- Component, data format, language and eip documentation now included in the built component JARs. And Java API and JMX API to access that documentation. And APIs to explain an endpoint uri, eip configuration and what all those configured options mean. In other words the same level of complete documentation of your Camel apps at both design and runtime, accessible from Java / JMX and tooling.
- Component, data format, language and eip can now have associated label(s) which are used for grouping components into: core, database, messaging, http, rest, etc.
- The XML DSL schema now include documentation
- Provide Configurer for user to configure the CXF conduit and CXF destination from Java code
- Added a DelegateEndpoint interface into Camel API
- Support to setup the SslContextParameters in the camel-restlet component
- Java DSL - Should support nested choice in doTry .. doCatch
- MongoDb component now stores OIDs of the inserted records in the message header
- Recipient List now supports specifying custom Exchange Pattern in the endpoint ur's
- Type Converter to enum's is now case insensitive, so you can convert safely level=info to an enum with name Level.INFO etc.
- XSLT and Validation components now provides all their endpoint configurations in the endpoint, and not only in the component, making these components like any other components.
- Made the Camel Karaf Commands reusable by moving common code into a camel-commands-core module that SPI can extend and plugin Camel commands for other environments.
- Further hardening of the SJMS component.
- Rest DSL with embedded routes now supports onException, intercept etc in use for those embedded routes, just like any regular routes.
- Rest DSL now by default uses custom error message as-is without attempting to binding output (requires a HTTP error code of 300+ is set as a header)
- Camel Using PropertyPlaceholder now supports specifying a default value together with the key to lookup.
- Camel Using PropertyPlaceholder now supports not having to define a PropertiesComponent if all the placeholder keys has default values which are to be used (less configuration needed in those situations).
- Camel Using PropertyPlaceholder now supports 3rd party functions to lookup the property values, this allow end users to implement their own logic - we provide 3 out of the box functions to lookup values from OS environment variable, JVM system properties, or the service name idiom.
- RabbitMQ now pools Channels for the producer to avoid sharing same Channel among concurrent producers which are not recommended by RabbitMQ client.
- Camel commands is now reusable outside Apache Karaf as a base by the commands-core module.
- Camel commands using Jolokia for remote communication by the commands-jolokia module.
- More minor processors such as setHeader, removeHeader, removeHeaders and ditto for properties is now also enlisted in JMX under processors.
- Optimized usage of type conversion during routing reducing the number of attempts needed.
- Optimized CaseInsentiveMap used as message headers to use a single map instead of two and yield less memory overhead and performance
What is new in version 2.15.1:
- Component, data format, language and eip documentation now included in the built component JARs. And Java API and JMX API to access that documentation. And APIs to explain an endpoint uri, eip configuration and what all those configured options mean. In other words the same level of complete documentation of your Camel apps at both design and runtime, accessible from Java / JMX and tooling.
- Component, data format, language and eip can now have associated label(s) which are used for grouping components into: core, database, messaging, http, rest, etc.
- The XML DSL schema now include documentation
- Provide Configurer for user to configure the CXF conduit and CXF destination from Java code
- Added a DelegateEndpoint interface into Camel API
- Support to setup the SslContextParameters in the camel-restlet component
- Java DSL - Should support nested choice in doTry .. doCatch
- MongoDb component now stores OIDs of the inserted records in the message header
- Recipient List now supports specifying custom Exchange Pattern in the endpoint ur's
- Type Converter to enum's is now case insensitive, so you can convert safely level=info to an enum with name Level.INFO etc.
- XSLT and Validation components now provides all their endpoint configurations in the endpoint, and not only in the component, making these components like any other components.
- Made the Camel Karaf Commands reusable by moving common code into a camel-commands-core module that SPI can extend and plugin Camel commands for other environments.
- Further hardening of the SJMS component.
- Rest DSL with embedded routes now supports onException, intercept etc in use for those embedded routes, just like any regular routes.
- Rest DSL now by default uses custom error message as-is without attempting to binding output (requires a HTTP error code of 300+ is set as a header)
- Camel Using PropertyPlaceholder now supports specifying a default value together with the key to lookup.
- Camel Using PropertyPlaceholder now supports not having to define a PropertiesComponent if all the placeholder keys has default values which are to be used (less configuration needed in those situations).
- Camel Using PropertyPlaceholder now supports 3rd party functions to lookup the property values, this allow end users to implement their own logic - we provide 3 out of the box functions to lookup values from OS environment variable, JVM system properties, or the service name idiom.
- RabbitMQ now pools Channels for the producer to avoid sharing same Channel among concurrent producers which are not recommended by RabbitMQ client.
- Camel commands is now reusable outside Apache Karaf as a base by the commands-core module.
- Camel commands using Jolokia for remote communication by the commands-jolokia module.
- More minor processors such as setHeader, removeHeader, removeHeaders and ditto for properties is now also enlisted in JMX under processors.
- Optimized usage of type conversion during routing reducing the number of attempts needed.
- Optimized CaseInsentiveMap used as message headers to use a single map instead of two and yield less memory overhead and performance
What is new in version 2.14.1:
- Make CamelBlueprintTestSupport tests more predictable
- Parameter JSON schema should support enum types
- Dozer should not initialize the same DozerBeanMapperConfiguration twice
- Zip component does not unpack files from directories into zip archive
What is new in version 2.11.1:
- Mainly a bug fix release with 110 issues resolved.
What is new in version 2.10.0:
- Added support for Java 1.7
- Added consumer to JCR component
- Internal code cleanup to reduce warnings reported by Eclipse
- Moved Spring Testing from camel-test to camel-test-spring component.
- Camel Property Placeholders are now supported in embedded Expressions within Camel routes.
- Added missing options in the XML DSL for the XPath language to control and set which XPath Engine to use, etc.
- Added option logNamespaces to the XPath language to have INFO logging of detected namespaces from message. This can be used to troubleshoot issues where an XPath expression doesn't work as expected (as it's often a namespace conflict).
- Added replyToCacheLevelName option to the JMS component, allowing configuration of cache levels for persistent reply consumers when doing request/reply over JMS. Some message brokers do not work well with caching, so users may need to set this option to CACHE_NONE.
- Added antInclude and antExclude options to File and FTP components to make it easier to specify include/exclude filters using ANT syntax.
- The Camel archetypes for Java and Scala no longer generate projects with Spring dependencies.
- Improved JdbcMessageIdRepository in the SQL to use custom SQL statements/queries.
What is new in version 2.9.1:
- This release includes 109 bug fixes.
What is new in version 2.8.0:
- This release comes with a record 422 issues resolved, many of them coming as contributions from our community.
What is new in version 2.7.2:
- This release targets better usability in OSGi environments and fixes for the camel-web console, in particular an XSS vulnerability reported by Secunia.
What is new in version 2.7.0:
- Switched to use slf4j as the logger instead of commons logging.
- Camel now checks state of Service during starting/stopping the Lifecycle of the Service. This avoids double starting/stopping in case the service was already in the desired state.
- Added support for MDC logging with Camel
- JMS consumer now eager checks if Camel is shutting down and signals that to its DefaultMessageListenerContainer which avoids trying to re-connect/failover during shutdown.
- Introduced option to automatic Mock endpoints during testing. This makes testing without having to add Mock endpoints in your routes a breeze. See more details at Mock component documentation.
- Added assertPeriod option to Mock endpoint, which is a period im milliseconds, that the Mock will pause and then re-assert itself to ensure the assertion is still valid. This can be used as a threshold when testing with expectations that exactly a given number of messages should arrive on the Mock endpoint.
- Added arrives DSL to Mock endpoint to allow you to setup expectations about timespan between messages arriving on the Mock endpoint. See more details at Mock component documentation.
- HTTP4 is upgraded to use Apache HttpClient 4.1
- Fixed an issue with File consumer having absolute starting directory and using absolute paths in the move option as well
- Fixed concurrent append to the same file in the File producer
- Fixed issue with restarting Quartz causing a failure due trigger name already exists issue for stateful jobs.
What is new in version 2.6.0:
- Introduced ScheduledRoutePolicy to allow you to schedule when routes should be active.
- Added separator option to FTP component to allow end users to control what path separator to use when uploading files to remote FTP servers. For example if a Windows based FTP server only accept Windows paths, then you can set this option to Windows.
- Thread names now outputs CamelContext name which makes it easier to differentiate when running multiple Camel applications in the same JVM.
- Introduced contentCache option to XSLT component to allow easy reloading of stylesheets during development.
- Improved Camel JMX to always find next free name when registering in JMX and existing name exists (to remedy name clash). This makes it easier when deploying muliple WARs in the same JVM where the Camel applications may have same CamelContext id. In OSGi the name in JMX now has the bundle id as prefix.
- Fixed BeanShell language
- Quartz now supports using older versions (eg versions 1.6/1.7) of quartz JARs.
- LDAP supports paging.
- Added features to camel-blueprint component so it is on-par with feature set from Spring
- XML.
- Fixed issue in OSGi with refreshing Camel bundles causing a race condition when discovering
- type converters
- Fixed problem installing camel-cxf feature on Apache Karaf.
- CXF and CXFRS use the CXF continuation API when using CXF 2.3.x.
- You can access the CXF Message from the Camel message header by using the key "CamelCxfMessage"
- after the CXF consumer.
- Easier to debug routes from camel-test using the Debugger
- Data Format now supports Service and CamelContextAware callbacks which means its much easier
- to perform custom initialization logic in your data formats.
- Improved File, FTP, Irc, LDAP, Bindy and many other components.
- Made it easier to load routes from XML files using loadRoutesDefinition method from CamelContext.
- Camel now fails on startup if it cannot load type converters from the classpath.
What is new in version 2.1.0:
- Claus was very busy with a serious Camel JMX overhaul, including a pluggable management API to allow 3rd party tools.
- Improvements for using Camel in OSGi environments
- A bunch of new components contributed by the community such as Printer (very handy to batch print those reports overnight); SNMP (gives you the capability to poll SNMP capable devices or receive traps); GAE (provides connectivity to the cloud computing services provided by Googls's App Engine) and Quickfix (to send/receive Financial messages (FIX))
- Improvements in error handling
- As usual, a lot of fixes and enhancement of the 70+ Components
Bình luận không