使用quartz end point和file to string transformer获取以下异常

时间:2015-06-12 12:51:00

标签: mule

java.lang.IllegalArgumentException: Cannot apply transformer FileToString{this=2e93ba04,
name='File_to_String', ignoreBadInput=false, 
returnClass=SimpleDataType{type=java.lang.String, mimeType='*/*'}, 
sourceTypes=[SimpleDataType{type=java.io.File, mimeType='*/*'}, 
SimpleDataType{type=java.io.FileInputStream, mimeType='*/*'}]}
on source payload: class org.mule.transport.AbstractConnector$7.

以下是我们代码的摘要。

<quartz:inbound-endpoint responseTimeout="10000"
            doc:name="Quartz" cronExpression="0 0/3 * * * ? *" repeatInterval="0"
            jobName="ApptioStart" >
            <quartz:endpoint-polling-job>
                <quartz:job-endpoint ref="fileConnector"/>
            </quartz:endpoint-polling-job>

        </quartz:inbound-endpoint>
        <logger message="#[message.outboundProperties]" level="INFO" doc:name="Logger"/>

        <!-- Read file from predefined folder path <file:inbound-endpoint path="${csv.folder.path}" 
            responseTimeout="10000" doc:name="File" /> -->
        <file:file-to-string-transformer
            doc:name="File to String" />

1 个答案:

答案 0 :(得分:0)

问题在于:

<quartz:job-endpoint ref="fileConnector"/>

ref应该引用全局端点而不是连接器。这就是消息的有效负载是org.mule.transport.AbstractConnector的原因,这会导致异常。

因此,通过将其置于流外部来创建全局文件端点:

<file:endpoint name="csvFileEndpoint"
      path="${csv.folder.path}" 
      responseTimeout="10000"
      doc:name="CSV Files" />

然后在Quartz端点中使用它:

<quartz:job-endpoint ref="csvFileEndpoint"/>

参考文献: