我是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
。
答案 0 :(得分:1)
您可以在Apache Camel中更轻松地执行此操作,您可以在文件端点中配置过滤,因此它就变为
<route>
<from uri="file:D:/input?delay=20000&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