2

下面是我的文件入站端点配置。它正在处理指定路径中所有可用的 .edi 文件。

<file:inbound-endpoint path="D:\test docs\in" pollingFrequency="3000" responseTimeout="10000" doc:name="Incoming File">

<file:filename-regex-filter pattern="(.*).edi" caseSensitive="false" />

我从spring应用程序向这个端点发送一个事件,如下所示

muleClient.dispatch("file://D:/test docs/in", inputFileName, null);

我将输入文件名作为 message1.edi 传递。我想限制文件入站点以处理其名称作为 dispatch() 中的有效负载对象发送的单个文件。

文件入站端点是否可能?

Muleclient.dispatch() 是一个异步方法。我想暂停当前线程,直到收到 dispatch() 的回复。截至目前,我正在使用 thread.sleep()。有没有更好的方法?

4

3 回答 3

2

我可能错过了重点:-) 但是我不认为调度是你想要使用的。要在 mule 文件侦听器上触发事件,请将 message1.edi 复制到文件夹 file://D:/test docs/in

mule 将拾取文件并处理。

或者,我认为 mule 文件端点不支持动态更改正则表达式,如果您想动态更改文件,则使用 muleClient.dispatch("file://D:/test docs/in", inputFileName,无效的); 并使用 groovy 组件读取触发器中命名的文件的进程

def fileContent = new File("file://D:/test docs/in/" + inputFileName).text
return fileContent

如果不是文本文件,请根据需要进行调整。

于 2013-09-05T16:52:50.683 回答
1

不需要入站端点。您需要使用requestMuleClient 的方法来按需获取自定义文件内容:

muleClient.request('file://D:/test docs/in', -1);
于 2013-09-05T17:17:23.113 回答
0

抱歉,我本可以发布整个 mule 流程代码。下面是我的骡流程:

<flow name="ediTransformationFlow" doc:name="ediTransformationFlow"> <file:inbound-endpoint path="D:\smooks\test docs\in" pollingFrequency="3000" responseTimeout="10000" doc:name="Incoming File" transformer-refs="SmooksTransformer" moveToDirectory="D:\smooks\test docs\history" moveToPattern="#[header:originalFilename]">
<file:filename-regex-filter pattern="(.*).edi" caseSensitive="false" /> </file:inbound-endpoint> <file:outbound-endpoint path="D:\smooks\test docs\out" responseTimeout="10000" doc:name="Outgoing File" outputPattern="#[header:originalFilename].xml"/>
</flow>

我的要求是:从 spring 控制器我将发送 .edi 文件名到文件入站端点。它将从 D:\smooks\test docs\in 文件夹中读取文件,并将其转换为 xml 文件。文件出站端点将 xml 文件放在 D:\smooks\test docs\out 文件夹中。在 spring 控制器中,我应该能够读取 xml 文件并创建一个 dom 源。

xmlDocument = builder.parse(documentRootPath + outputFileName); Source source = new DOMSource(xmlDocument);

要从 spring 控制器请求 mule,我正在使用 mule 客户端

muleClient.dispatch("file://D:/smooks/test docs/in", inputFileName,null); message = muleClient.request("file://D:/smooks/test docs/out", 100000);

于 2013-09-06T05:05:19.577 回答