我试图通过一些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>
答案 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