我需要有三个不同的预定作业来拾取和传输文件到SFTP服务器。使用示例我能够创建单个工作流程。但是,当我复制该流并调整配置时,我收到一个错误抱怨2个连接器匹配协议文件。
它要求我指定这些,但是,我已经指定了每个流应该使用哪个端点。
有没有人对我做错了什么,或者骡子在寻找什么有什么想法?
流程定义:
<file:endpoint name="partsDataConnector" path="${partsDataOriginFilePath}" pollingFrequency="5000" doc:name="partsDataFile"/>
<flow name="partsDataTransfer">
<quartz:inbound-endpoint jobName="partsDataTransfer"
repeatInterval="10000" responseTimeout="10000" doc:name="Quartz">
<quartz:endpoint-polling-job>
<quartz:job-endpoint ref="partsDataConnector"/>
</quartz:endpoint-polling-job>
</quartz:inbound-endpoint>
<sftp:outbound-endpoint host="${destinationFileServerIp}" port="${destinationFileServerPort}"
path="${partsDataDestinationPath}" tempDir="${partsDataDestinationTempDir}"
user="${destinationFileServerUser}" password="${destinationFileServerPassword}"
outputPattern="#[header:originalFilename]" />
</flow>
<file:endpoint name="imageDataConnector" path="${imageDataOriginFilePath}" pollingFrequency="5000" doc:name="partsDataFile"/>
<flow name="imageDataTransfer">
<quartz:inbound-endpoint jobName="imageDataTransfer"
repeatInterval="10000" responseTimeout="10000" doc:name="Quartz">
<quartz:endpoint-polling-job>
<quartz:job-endpoint ref="imageDataConnector"/>
</quartz:endpoint-polling-job>
</quartz:inbound-endpoint>
<sftp:outbound-endpoint host="${destinationFileServerIp}" port="${destinationFileServerPort}"
path="${imageDataDestinationPath}" tempDir="${imageDataDestinationTempDir}"
user="${destinationFileServerUser}" password="${destinationFileServerPassword}"
outputPattern="#[header:originalFilename]" />
</flow>
<file:endpoint name="customerDataConnector" path="${customerDataOriginFilePath}" pollingFrequency="5000" doc:name="partsDataFile"/>
<flow name="customerDataTransfer">
<quartz:inbound-endpoint jobName="customerDataTransfer"
repeatInterval="10000" responseTimeout="10000" doc:name="Quartz">
<quartz:endpoint-polling-job>
<quartz:job-endpoint ref="customerDataConnector" />
</quartz:endpoint-polling-job>
</quartz:inbound-endpoint>
<sftp:outbound-endpoint host="${destinationFileServerIp}" port="${destinationFileServerPort}"
path="${customerDataDestinationPath}" tempDir="${customerDataDestinationTempDir}"
user="${destinationFileServerUser}" password="${destinationFileServerPassword}"
outputPattern="#[header:originalFilename]" />
</flow>
堆栈跟踪:
2014-04-09 06:46:44,924 INFO [org.quartz.core.JobRunShell] Job mule.quartz:// customerDataTransfer抛出JobExecutionException: org.quartz.JobExecutionException:org.mule.transport.service.TransportFactoryException:至少有2个连接符匹配protocol&#34; file&#34;,因此必须使用&#39;在端点上指定要使用的连接器。连接器&#39;属性/属性。配置中支持&#34; file&#34;的连接器是:connector.file.mule.default,connector.file.mule.default.1,(java.lang.IllegalStateException)[请参阅嵌套异常:org.mule.transport.service.TransportFactoryException:至少有2个匹配协议的连接器&#34; file&#34;,因此必须使用&#39;连接器&#39;在端点上指定要使用的连接器。属性/属性。配置中支持&#34; file&#34;的连接器是:connector.file.mule.default,connector.file.mule.default.1,(java.lang.IllegalStateException)] 在org.mule.transport.quartz.jobs.EndpointPollingJob.doExecute(EndpointPollingJob.java:176) 在org.mule.transport.quartz.jobs.AbstractJob.execute(AbstractJob.java:36) 在org.quartz.core.JobRunShell.run(JobRunShell.java:202) 在org.quartz.simpl.SimpleThreadPool $ WorkerThread.run(SimpleThreadPool.java:534)
答案 0 :(得分:0)
错误消息要求您声明显式file:connector
组件。现在你只有file:endpoint
个组件。
答案 1 :(得分:0)
如果您还没有定义文件连接器。尝试声明一个并在每个文件端点上添加连接器引用。
<file:connector name="myFileConnector" ></file:connector>
在每个文件端点上添加Connector引用,如下所示。添加所有三个文件端点的引用。
<file:endpoint name="imageDataConnector" connector-ref="myFileConnector" path="${imageDataOriginFilePath}" pollingFrequency="5000" doc:name="partsDataFile"/>
希望这有帮助。