首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路由间交换文件

路由间交换文件
EN

Stack Overflow用户
提问于 2013-11-26 10:22:43
回答 1查看 1.2K关注 0票数 0

我试图解压缩一个文件,并用一个特定的Xpath值单独处理xml文件。下面是Spring。

代码语言:javascript
复制
<camel:route id="unzip-file" startupOrder="400">
    <from uri="file:{{download.folder}}?move={{download.archive}}&amp;consumer.delay=10000"/>
    <unmarshal ref="zipFileDataFormat"/>
    <split streaming="true">
        <simple>${body}</simple>
        <to uri="log:org.apache.camel?level=INFO&amp;showAll=true&amp;multiline=true"/>
        <to uri="file:{{extract.folder}}"/>
    </split>
</camel:route>

<camel:route id="process-extracted-files" startupOrder="300">
    <from uri="file://{{extract.folder}}?noop=true&amp;consumer.delay=10000&amp;delete=false"/>
    <choice>
        <when>
            <simple>${file:ext} regex '(?i)(xml)'</simple>
            <to uri="direct:process-xml-file"/>
        </when>
        <otherwise>
            <log message="ignoring file ${file:name}, not XML"/>
        </otherwise>
    </choice>
</camel:route>

<camel:route id="process-xml-file" startupOrder="200">
    <from uri="direct:process-extracted-files"/>
    <log message="processing file ${file:name}" />
    <choice>
        <when>
            <xpath>/invoices/@region='region1'</xpath>
            <split>
                <xpath>/invoices/invoice</xpath>
                <log message="${body}"/>
            </split>
        </when>
        <otherwise>
            <log message="ignoring file ${file:name}, not 'region1'"/>
        </otherwise>
    </choice>
</camel:route>

我在日志中得到了错误,知道我遗漏了什么。

代码语言:javascript
复制
Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[process-extracted-] [process-extracted-] [file://C:/Temp/invoices/extract?consumer.delay=10000&delete=false&noop=true       ] [       353]
[process-extracted-] [choice1           ] [when[simple{${file:ext} regex '(?i)(xml)'}]choice[]                           ] [       354]
[process-extracted-] [to6               ] [direct:process-xml-file                                                       ] [         5]

Exchange
---------------------------------------------------------------------------------------------------------------------------------------
Exchange[
    Id                  ID-crm.bigcorp.co.za-51788-1385461098541-0-4
    ExchangePattern     InOnly
    Headers             {breadcrumbId=ID-crm.bigcorp.co.za-51788-1385461098541-0-3, CamelFileAbsolute=true, CamelFileAbsolutePath=C:\Temp\invoices\extract\INVOICES_V2_DAILY_DELTA_20131105.xMl, CamelFileLastModified=1385450517644, CamelFileLength=205502, CamelFileName=INVOICES_V2_DAILY_DELTA_20131105.xMl, CamelFileNameConsumed=INVOICES_V2_DAILY_DELTA_20131105.xMl, CamelFileNameOnly=INVOICES_V2_DAILY_DELTA_20131105.xMl, CamelFileParent=C:\Temp\invoices\extract, CamelFilePath=C:\Temp\invoices\extract\INVOICES_V2_DAILY_DELTA_20131105.xMl, CamelFileRelativePath=INVOICES_V2_DAILY_DELTA_20131105.xMl, CamelRedelivered=false, CamelRedeliveryCounter=0}
    BodyType            org.apache.camel.component.file.GenericFile
    Body                [Body is file based: GenericFile[C:\Temp\invoices\extract\INVOICES_V2_DAILY_DELTA_20131105.xMl]]
]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.component.direct.DirectConsumerNotAvailableException: No consumers available on endpoint: Endpoint[direct://process-xml-file]. Exchange[INVOICES_V2_DAILY_DELTA_20131105.xMl]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-26 11:22:54

将子路由定义的URI更改为direct:process-xml-file (与调用相同)

代码语言:javascript
复制
<from uri="direct:process-xml-file"/>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20214296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档