从服务混合文件轮询器迁移到apache camel文件轮询器

时间:2015-08-17 05:07:24

标签: java java-ee apache-camel apache-servicemix

我是apache camel的新手。我想从服务混合文件轮询器迁移到camel文件轮询器。我正在尝试这样做,但是目前我没有什么可测试的,因为我必须对此进行编码并给某人进行测试。那么有人可以帮助我并检查我是否正确行事吗?

服务组合文件轮询代码:

    <sm:activationSpec componentName="abcFilePoller"
        destinationService="b:destinationA"
        service="b:abcFilePoller">
        <sm:component>
            <bean class="org.apache.servicemix.components.file.FilePoller">
                <property name="file" value="file://D:/input" />
                <property name="period" value="20000"/>
                <property name="archive" value="file://D:/archive" />
                <property name="filter" ref="abcFileFilter" />
                <property name="marshaler">
                    <bean class="org.apache.servicemix.components.util.BinaryFileMarshaler" />
                </property>
            </bean>
        </sm:component>
    </sm:activationSpec>
    <sm:activationSpec componentName="destinationA"
        service="b:destinationA">
        <sm:component>
            <bean
                class="com.abc.file.ABCReceiverComponent">
            </bean>
        </sm:component>
    </sm:activationSpec>
        <bean id="abcFileFilter" class="org.apache.commons.io.filefilter.WildcardFileFilter">
<constructor-arg value="A*.ID" />

Apache Camel文件轮询

    <camel:route id="abcFilePoller">
        <camel:from
            uri="timer://time?period=20000"/>
        <camel:pollEnrich uri="file://D:/input"/>
        <camel:filter ref="abcFileFilter"></camel:filter>
        <camel:to uri="file://D:/archive" />
        <camel:to uri="" />
    </camel:route>

<bean id="abcFileFilter" class="org.apache.commons.io.filefilter.WildcardFileFilter">
    <constructor-arg value="A*.ID" />                                                                                                                                                                                             
</bean>

我还没有完成骆驼编码。我离开了目的地部分。我不知道marshaler部分中使用的service-mix。如何使用camel实现BinaryFileMarshaler

1 个答案:

答案 0 :(得分:1)

您可以在Apache Camel中更轻松地执行此操作,您可以在文件端点中配置过滤,因此它就变为

   <route>
     <from uri="file:D:/input?delay=20000&amp;include=A.*ID"/>
     <to uri="file:D:/archive"/>
  </route>

请注意,include选项使用正则表达式,因此如果您不熟悉它,可能需要一些尝试才能使表达式按预期工作。但它的标准java正则表达式。

详情请见:http://camel.apache.org/file2

对于Apache Camel的新用户,请参阅:http://java.dzone.com/articles/open-source-integration-apache