Apache Camel 是一个非常强大的基于规则的路由以及媒介引擎,该引擎提供了一个基于POJO的 企业应用模式(Enterprise Integration Patterns)的实现,你可以采用其异常强大且十分易用的API (可以说是一种Java的领域定义语言 Domain Specific Language)来配置其路由或者中介的规则。 通过这种领域定义语言,你可以在你的IDE中用简单的Java Code就可以写出一个类型安全并具有一定智能的规则描述文件。这与那种复杂的XML配置相比极大简化了规则定义开发。 当然Apache Camel也提供了一个对Spring 配置文件的支持。
Apache Camel 采用URI来描述各种组件,这样你可以很方便地与各种传输或者消息模块进行交互,其中包含的模块有 HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF Bus API。 这些模块是采用可插拔的方式进行工作的。Apache Camel的核心十分小巧你可以很容易地将其集成在各种Java应用中。
Camel 是一个代码先行的工具,它允许开发者在无须学习厂商定制和复杂的底层技术的情况下进行精密的大规模集成。Camel使用Java领域说明性专用语言来连接信息系统和配置路由和调解规则,在POJO基础上实施企业整合模式。这样,就能使得开发人员不必阅读一页又一页的诸如JMS或JBI之类的技术规范,也不用处理较低级别的Spring框架就可以直接设计和建立面向服务架构(SOA)。
Apache Camel是从Apache其他项目尤其是Apache ActiveMQ 以及Apache ServiceMix的代码和灵感有机的衍生出来的。该项目的成员们发现:人们在许多不同的情况下都想要建立或是使用企业集成模式书中的模式。因此,Camel团队就这样明确的目的开始建立这样的框架。
昨天Apache Camel的官方网站公布了最新版的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.
·Its now possible to use multiple QuartzScheduler's when deploying multiple Camel applications in the same JVM classloader.
·Quartz update checker is now always disabled, see more details here
·Fixed potential issue installing camel-ftp feature in Apache ServiceMix
·New JdbcMessageIdRepository for the idempotent consumer EIP in SQL
·Relaxed how aggressive Camel was registering services as MBeans in JMX. Now Camel will by default only registeres MBeans when starting CamelContext or starting new routes. This avoids registering too many MBeans if using dynamic EIP patterns such as Recipient List using different endpoint urls, causing new endpoints and its associated services to be registered in JMX. ·This would keep growing over time and consume memory as well. You can use the registerAlways or registerNewRoutes options on ManagementAgent to control this behavior. See Camel JMX for more details.
·Redelivery policy and OnException now supports property placeholders in both Java and XML DSLs.
·Introduced <redeliveryPolicyProfile> to easily define common profiles for redelivery policies, which you can refer to from <errorHandler> or <onException> using the redeliveryPolicyRef attribute. Also Spring Frameworks property placeholders works with <redeliveryPolicyProfile>.
·Improved the XML based Error Handlers to validate configuration on startup, to fail if they have been misconfigured.
·Spring Integration is upgraded to Spring Integration 2.0.
·Added endChoice() to the Java DSL to be able to use any EIPs inside the Content Based Router. See more details here
·Property placeholders can now be use for any kind of attributes/options in the EIPs in the Camel routes. For example in the ·Spring XML file you can now use placeholders for timeout attributes etc. This is possible using the specialized placeholder namespace. See more details at the Using PropertyPlaceholder wiki page. In the Java DSL there is a new placeholder option on each EIP you can leverage.
·The camel-jdbc-aggregator component is merged into the camel-sql component.
·Fix in Mail component for duplicate attachments, and when using starttls.
·Maven 3 is now supported for building
·Tidy up the XML DSL to not allow nesting tags where it doesn't make sense.
·Internal cleanup in route preparation logic to be fully shared for all DSLs (before the XML DSLs and Java DSL was a bit different)
·Fixed InterceptFrom to work with from endpoints defined using ref's or instances (eg everything but uris)
·Fixed HTTP and HTTP4 producers double encoding endpoint uri, when calling external service
·Fixed JMS producer not working with OracleAQ throwing exception on accessing JMSReplyTo
·Added support for using OSGi Blueprint property placeholder service with Camel routes. Camel uses convention over configuration so all you have to do is to define the OSGi blueprint placeholder and you can refer to those from the <camelContext>. Pay attention to the placeholder tokens using by Camel is {{ }}.
·<threadPoolProfile> and <threadPool> is now easier to use with property placeholders
·Properties component now supports JVM system properties and OS environment variables in the locations option. For example using "file:${karaf.home}/etc/foo.properties" to refer to the foo.proeprties file in the Apache Karaf installation.
·Fixed an issue with Recipient List in parallel mode, not reusing background aggregator thread
·Fixed an issue with dependency ordering when using Spring's depends-on attribute between multiple <camelContext>.
·SERVLET component doesn't hijack Spring to start the web application anymore. Spring and CamelServlet is now independent. See more at important changes to consider when upgrading.
·Fixed all Camel Maven Archetypes to use new Maven format and ensured they all work out of the box.
·Web Console upgraded to Scalate 1.4.1, and the webpages is now precompiled
·JT400 can now execute program calls on the AS/400
·Cache now only mandates a message body for the add and update operations. This makes get operation possible for messages with no existing body.
·Fixed issue when Jetty continuation timeouts has been triggered before Asynchronous Routing Engine has reply ready. This would cause Jetty to log WARN logs about illegal state.
下载地址:
Description Download Link PGP Signature file of download Windows Distribution apache-camel-2.7.0.zip apache-camel-2.7.0.zip.asc Unix/Linux/Cygwin Distribution apache-camel-2.7.0.tar.gz apache-camel-2.7.0.tar.gz.asc