通过http适配器调用时,Mulesoft filecopy无法正常工作

时间:2017-10-27 07:44:50

标签: mule adapter

我试图通过一些http url调用文件从一个本地文件夹复制到另一个本地文件夹,但它无法正常工作。在我的目标文件夹中,使用.dat扩展名创建了一些垃圾文件

源文件夹 - so1

目标文件夹 - so2

这是我在调用http端点

时在mule控制台中收到的消息
INFO  2017-10-27 14:02:45,346 [[each].HTTP_Listener_Configuration.worker.01] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'File.dispatcher.33168380'. Object is: FileMessageDispatcher

INFO  2017-10-27 14:02:45,467 [[each].HTTP_Listener_Configuration.worker.01] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'File.dispatcher.33168380'. Object is: FileMessageDispatcher

INFO  2017-10-27 14:02:45,488 [[each].HTTP_Listener_Configuration.worker.01] org.mule.transport.file.FileConnector: Writing file to: D:\so2\681cebe0-baf1-11e7-9534-0c7b20524153.dat

这是配置XML

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:file="http://www.mulesoft.org/schema/mule/file"
    xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core"
    xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
                        http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
                        http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
                        http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">

    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration" />
    <file:connector name="File" writeToDirectory="D:\so2" readFromDirectory="D:\so1" autoDelete="false" streaming="true" validateConnections="true" doc:name="File" />
    <flow name="eachFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/copy" doc:name="HTTP" />
        <file:outbound-endpoint path="D:\so1" connector-ref="File" responseTimeout="10000" doc:name="File" />
        <set-payload value="files copied" doc:name="Set Payload" />
    </flow>
</mule>

1 个答案:

答案 0 :(得分:0)

不在您的配置中读取文件的位置。

在您的方案中,文件出站端点只创建一个具有未知文件扩展名的空有效负载的新文件。

你可以用两种方式做,

1)您可以使用文件入站来读取文件,然后复制。

,而不是HTTP入站

2)如果您必须使用HTTP入站来按需复制文件,请在配置中间使用mule requester组件来读取文件然后复制。

如何使用骡子请求者,您可以在这里查看https://www.ricston.com/blog/reading-file-middle-flow-mule-requester/

<强>更新

请参阅以下配置,从一个文件夹中读取所有文件,并使用Mule请求者复制到另一个文件夹。

<http:listener-config name="HTTP_Listener_Configuration"
    host="localhost" port="8086" doc:name="HTTP Listener Configuration" />
<file:connector name="File" 
     autoDelete="true" streaming="false"
    validateConnections="true" doc:name="File" moveToDirectory="C:\FilePOC\so2"/>
<flow name="Flow1">
    <http:listener config-ref="HTTP_Listener_Configuration"
        path="/copy" doc:name="HTTP" />
    <mulerequester:request-collection resource="file:///C:/FilePOC/so1?connector=File" doc:name="Mule Requester"/>
    <set-payload value="File copy has been successful." doc:name="Set Payload"/>
</flow>

此处,无需使用File出站组件来复制文件。文件连接器上的 moveToDirectory 选项会在读取文件后移动文件。

有关如何将Mule请求者与JMS一起使用的另一个示例可以在此处找到https://www.slideshare.net/anir37/using-mule-requester-for-jms