`
hiphunter921
  • 浏览: 68324 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

My first ride apache camel

    博客分类:
  • Java
 
阅读更多

These days I have create my first route of apache camel for a real enterprise bizz.

Just as what 《Camel in Action》 says: "Camel is an integration framework that aims to make your integration projects productive and fun" , It`s awsome that the Java DSL looks so directly and the Spring DSL is so powerful that you can just config the Spring xml to route for your own without java compiling.

 

The route as follows:

 

<route id="lz" autoStartup="false" trace="true">
	   	   <from uri="ftp://lori@127.0.0.1:21?password=123&amp;filter=#lzFtpFileNameFilter&amp;maximumReconnectAttempts=1&amp;reconnectDelay=3000&amp;disconnect=true&amp;pollStrategy=#lzPollingConsumerPollStrategy&amp;throwExceptionOnConnectFailed=true"/>
	   	   <camel:onCompletion>
	   	       <process ref="stopLZRouteProcessor"/>
	   	   </camel:onCompletion>
	   	   
	   	   <camel:log loggingLevel="INFO" message="Picked up ${file:name}"/>
	   	   <process ref="zipFileSplittingProcessor"/>
	   	   <split>
	   	   	   <simple>${body}</simple>
	   	   	   <unmarshal><csv /></unmarshal>
	   	   	   <bean ref="lzServiceBean" method="csv2MapList"/>
	   	   	   <split>
	   	   	   		<simple>${body}</simple>
	   	   	   		<camel:setHeader headerName="Subject"><camel:constant>Test subject</camel:constant></camel:setHeader>
	   	   	   		<camel:setHeader headerName="From"><camel:constant>Lori</camel:constant></camel:setHeader>
	   	   	   		<camel:setHeader headerName="contentType"><camel:constant>text/html;charset=UTF-8</camel:constant></camel:setHeader>
	   	   	   		<camel:setHeader headerName="to"><camel:simple>${body[dest]}</camel:simple></camel:setHeader>
	   	   	   		<to uri="velocity://template/test.vm?contentCache=true&amp;encoding=utf-8"/>
	   	   	   		<to uri="smtp://mail.elitecrm.com?username=loriling@elitecrm.com&amp;password=0308"/>
	   	   	   </split>
	   	   </split>
	   </route>
 

 

With this route, the bigest problem is that I want to catch errors in the FTP endpoint (invalid login, server down, etc). I have tried errorHandler() but it only catches the errors produced after the message enters the exchange i.e. after from().

 

i try to set the FTP endpoint properties:

throwExceptionOnConnectFailed=true and pollStrategy=#lzPollingConsumerPollStrategy

then the FTPConsumer will  thrown an exception if a successful connection and login could not be establish and using the custom PollingConsumerPollStrategy which coded:

consumer.stop();

 in the rollback method.

Then the problem solved, it will only consume once if there is an exception of which FTP endpoint throws.

 

There are many features and EIPs that I havenot deal with and much more things i need to learn.

Last i extend my heartfelt gratitude to each camel authors and committers for bringing us so pretty project. Thanks again.

分享到:
评论

相关推荐

    Apache Camel中文开发使用指南.zip

    Apache Camel 是一个强大的开源框架,专门用于构建企业级应用程序中的集成解决方案。它提供了一种声明式的方式,使得开发者可以轻松地定义数据路由和处理规则,从而实现系统间的通信。这个"Apache Camel 开发使用...

    ApacheCamel-JDBC

    Apache Camel 是一个流行的开源集成框架,它允许开发者以声明式的方式定义路由和转换数据,使得在不同的软件组件之间实现通信变得更加简单。JDBC(Java Database Connectivity)是Java平台中的一个标准API,用于与...

    姜宁-我和Apache Camel这些年/Years of Apache Camel and I

    Apache Camel是Apache软件基金会下的一个开源集成框架,它实现了企业集成模式(Enterprise Integration Patterns,EIP),旨在简化在企业中的应用程序、系统和服务之间的集成工作。Camel支持多种传输协议,如HTTP、...

    Apache Camel Developer's Cookbook

    Apache Camel是一种开源的集成框架,其目的在于简化企业应用集成和规则流程的开发。它基于企业集成模式(Enterprise Integration Patterns),使得不同系统之间的消息传递和数据交换变得更加容易。Apache Camel支持...

    apache camel 集成组件 教程

    - **基础知识介绍:** 第一部分“First Steps”通过两个章节向读者介绍了 Camel 的基本概念和使用方法,帮助初学者快速上手。 - **Meeting Camel:** 介绍了 Camel 的历史背景、设计理念以及为何选择 Camel 进行...

    Apache Camel 框架之---JMS路由.docx

    Apache Camel 框架之 JMS 路由 Apache Camel 框架实现的 JMS 路由是指使用 Apache Camel 框架来实现 Java 消息服务(JMS)的路由。JMS 是一个 Java API,用于在 Java 应用程序之间进行消息传递。Apache Camel 框架...

    Apache Camel 开发指南.rar

    Apache Camel 是一个强大的开源企业级集成框架,它简化了在Java应用程序之间建立复杂的消息传递流程。这个"Apache Camel 开发指南"压缩包包含了丰富的资源,帮助开发者深入理解Camel的各个方面,包括路由表达式、...

    ApacheCamel-FTP

    Apache Camel 是一个流行的开源集成框架,它允许开发者在不同的系统、协议和服务之间建立灵活的数据通信。FTP(File Transfer Protocol)是互联网上广泛使用的文件传输协议,用于上传、下载和管理远程服务器上的文件...

    05-ApacheCamel-CXF-WebService

    Apache Camel 是一个强大的开源企业集成库,它提供了一种模型化的路由和消息转换方式,使得开发者可以轻松地在各种系统间构建复杂的集成解决方案。CXF 是一个流行的开放源代码服务框架,它支持多种Web服务标准,如...

    Java_Apache Camel Spring Boot示例.zip

    Java_Apache Camel Spring Boot示例是一个综合性的项目,展示了如何在Spring Boot应用程序中集成Apache Camel框架。Apache Camel是一个流行的开源框架,它简化了企业级集成(EIP,Enterprise Integration Patterns)...

    Apache Camel 源码分析.rar

    Apache Camel 是一个强大的开源企业集成库,它提供了一种声明式的方式来定义路由和转换数据,使得构建复杂的分布式系统变得更加简单。Camel 使用一种名为“DSL”(Domain Specific Language)的语法规则,允许开发者...

    apache-camel-3.7.0_数据同步_

    Apache Camel 是一个强大的开源框架,专门用于构建企业级集成解决方案。在标题“apache-camel-3.7.0_数据同步_”中提到的“数据同步”,是指利用Apache Camel实现不同系统、数据库或应用程序间的数据交换和一致性...

    01-ApacheCamel-HelloWorld

    Apache Camel 是一个强大的开源集成框架,它允许开发者在各种组件之间路由、转换和处理消息,以构建企业级的集成解决方案。在这个"01-ApacheCamel-HelloWorld"示例中,我们将深入理解如何使用 Camel 实现一个简单的 ...

    简化软件集成:一个ApacheCamel教程

    简化软件集成:一个ApacheCamel教程在本教程中,您将了解集成大型软件的一些最大挑战,以及ApacheCamel如何轻松解决这些难题。在您的软件工程中,您可能至少做了一次以下操作:1.确定应启动数据发送的业务逻辑片段。...

    apache camel

    Apache Camel 是一个强大的开源集成框架,它允许开发者在各种企业应用程序之间建立灵活、可重用的数据路由和集成解决方案。这个框架的核心理念是“统一的消息模型”,它提供了多种组件,支持多种协议和数据格式,...

    camel-idea-plugin, Apache camel IntelliJ IDEA 插件.zip

    camel-idea-plugin, Apache camel IntelliJ IDEA 插件 Apache camel IDEA插件 IntelliJ IDEA的插件,为代码编辑器提供一组 Apache camel 相关的功能。插件包括:Java,XML,属性或者yaml文件中驼峰终结点的代码完成...

    ApacheCamelDemo:Apache Camel演示(学习示例演示)

    Apache Camel - CXF组件(Code First and WSDL File First) Apache Camel - JMS/ActiveMQ组件 Apache Camel - Jetty组件 Apache Camel - Timer组件 Apache Camel - JDBC组件 Apache Camel - Dynamic Control Route...

Global site tag (gtag.js) - Google Analytics