我正在使用Spring集成,我有下一个案例:我正在使用 int-file:inbound-channel-adapter 读取XML文件,然后我拆分了使用 int-xml:xpath-splitter 的文件,我需要在分割后移动文件。
我想要 int-xml:xpath-splitter 的所有功能以及移动文件,我应该实现扩展XPathMessageSplitter的自定义拆分器吗?或者是否有其他方法可以使用开箱即用的组件?
感谢。
<int-xml:xpath-splitter id="salesTransSplitter"
input-channel="salesInputChannel"
output-channel="splitterOutChannel" order="1">
<int-xml:xpath-expression expression="/sales_transactions/trans"/>
</int-xml:xpath-splitter>
答案 0 :(得分:1)
这样的事情应该有用......
<int-file:inbound ... channel="foo" />
<int:publish-subscribe-channel id="foo" />
<int-xml:xpath-splitter input-channel="foo" ... order="1" />
<int-service-activator input-channel="foo" order="2"
expression="payload.renameTo(new java.io.File('/newDir/' + payload.name)" output-channel="nullChannel" />
如果您想测试重命名是否成功,请发送到nullChannel
以外的其他频道 - 布尔值表示成功。
修改强>
对此感到抱歉;每个消费端点都应支持order
,我将打开JIRA问题。
order
并非绝对必要;如果不存在order
,则将使用它们在配置中出现的顺序;我只是想明确一点。
(至少)有两种解决方法:
order
属性,它们将按照它们在XML中出现的顺序进行调用。将XPath拆分器配置为普通拆分器,支持支持订单...
<int:splitter id="salesTransSplitter" order="1"
input-channel="salesInputChannel"
output-channel="splitterOutChannel" order="1">
<bean class="org.springframework.integration.xml.splitter.XPathMessageSplitter">
<constructor-arg value="/sales_transactions/trans" />
</bean>
</int-xml:xpath-splitter>