gpt4 book ai didi

file - 用骡子移动文件

转载 作者:行者123 更新时间:2023-12-04 02:44:20 25 4
gpt4 key购买 nike

我想使用 Mule 来移动和处理文件。我正在尝试使用流程和“所有路由器”将同一文件移动到不同的文件夹,但它失败了。

这个有效:

    <flow name="testflow2Flow1" doc:name="testflow2Flow1">
<file:inbound-endpoint path="C:\IN" fileAge="10000" responseTimeout="10000" doc:name="File"/>
<set-variable variableName="tempfilename" value="#[header:originalFilename]" doc:name="Variable"/>
<file:outbound-endpoint path="C:\OUT" responseTimeout="10000" doc:name="File"/>
</flow>

enter image description here

但这不是!

    <flow name="testflow2Flow1" doc:name="testflow2Flow1">
<file:inbound-endpoint path="C:\IN" fileAge="10000" responseTimeout="10000" doc:name="File"/>
<set-variable variableName="tempfilename" value="#[header:originalFilename]" doc:name="Variable"/>
<all doc:name="All">
<processor-chain>
<file:outbound-endpoint path="C:\OUT" responseTimeout="10000" doc:name="File"/>
</processor-chain>
</all>
</flow>

enter image description here

我得到这个异常:

INFO 2013-10-03 20:22:19,072 [[testflow2].connector.file.mule.default.receiver.01] org.mule.transport.file.FileMessageReceiver:在文件上获得的锁:C:\IN\测试.txt.txt错误 2013-10-03 20:22:19,088 [[testflow2].testflow2Flow1.stage1.02] org.mule.exception.DefaultMessagingExceptionStrategy:


消息:无法复制带有流负载的消息。负载类型是“org.mule.transport.file.ReceiverFileInputStream”。消息负载类型为:ReceiverFileInputStream

代码:MULE_ERROR--2

异常堆栈是:1. 无法复制带有流负载的消息。负载类型是“org.mule.transport.file.ReceiverFileInputStream”。消息负载类型为:ReceiverFileInputStream (org.mule.api.MessagingException)

org.mule.routing.outbound.AbstractSequenceRouter:74 ( http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html )

根异常堆栈跟踪:org.mule.api.MessagingException:无法使用流负载复制消息。负载类型是“org.mule.transport.file.ReceiverFileInputStream”。消息负载的类型为:ReceiverFileInputStream 在 org.mule.routing.outbound.AbstractSequenceRouter.route(AbstractSequenceRouter.java:74) 在 org.mule.routing.outbound.AbstractOutboundRouter$1.process(AbstractOutboundRouter.java:105) 在 org.mule.routing.outbound.AbstractOutboundRouter$1.process(AbstractOutboundRouter.java:100) + 3 个(设置调试级别日志记录或 '-Dmule.verbose.exceptions=true' 一切)


最佳答案

添加这个 <object-to-byte-array-transformer/>入站端点之后的转换器将使它工作。

<flow name="testflow2Flow1" doc:name="testflow2Flow1">
<file:inbound-endpoint path="C:\IN" fileAge="10000" responseTimeout="10000" doc:name="File"/>
<object-to-byte-array-transformer/>
<set-variable variableName="tempfilename" value="#[header:originalFilename]" doc:name="Variable"/>
<all doc:name="All">
<file:outbound-endpoint path="C:\OUT" responseTimeout="10000" doc:name="File"/>
<file:outbound-endpoint path="C:\OUT1" responseTimeout="10000" doc:name="File"/>
</all>
</flow>

我认为它失败的原因是因为 mule 试图将文件作为流读取并作为流写入;这在你的第一个案例中很好。

但是在第二个流程中,因为你想写入多个地方,所以流式传输是不可能的。添加此转换器后,现在您在内存中拥有完整的有效负载,并且可以写入多个。

关于file - 用骡子移动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19163519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com