由DeadLetterChannel处理期间发生异常[file:deadletterqueue]由于无法存储文件:deadletterqueue

时间:2018-06-06 17:08:53

标签: java error-handling apache-camel dead-letter

无法存储文件:deadletterqueue引起:org.apache.camel.InvalidPayloadException:没有可用的类型:java.io.InputStream但有值:org.apache.http.entity.mime.MultipartFormEntity

使用http4发布客户端,在多部分表单数据传输失败时,无法将其写入deadLetterErrorHandler,因为它需要io流。我的deadLetterHandler在Camel Spring中全局设置。你怎么解决这个问题?谢谢!

<bean id="deadLetterErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
    <property name="deadLetterUri" value="${deadLetterQueue}"/>
    <property name="redeliveryPolicy" ref="redeliveryPolicyConfig"/>
    <property name="useOriginalBody" value="true" />
</bean>

<bean id="redeliveryPolicyConfig" class="org.apache.camel.processor.RedeliveryPolicy">
    <property name="maximumRedeliveries" value="3"/>
    <property name="redeliveryDelay" value="5000" />

</bean>

<camelContext
  id="com.ge.ip.mro.coreCamelContext"
  trace="true"
  xmlns="http://camel.apache.org/schema/blueprint"
  allowUseOriginalMessage="false"
  streamCache="true"
  errorHandlerRef="deadLetterErrorHandler" >

     <route 
        id="core.predix.upload.route"
        autoStartup="false" >
<!--        <from uri="seda:upload" /> -->
        <from uri="file:{{tsvUploadDirectory}}" />
        <process ref="customerEntitesProcessor" /> <!--  sets up the message with the customer environment entities to upload data -->
        <process ref="customerTokenProcessor" />   <!--  sets up the message with the cusotmer's token -->
<!--        <process ref="jsonMapper" /> -->       <!--  converts CSV data to JSON data -->
<!--        <to uri="{{jsonEndpoint}}" /> -->
        <process ref="uploadProcessor" />          <!--  conditions the message with the HTTP header info per customer env -->
        <setHeader headerName="CamelHttpUri">      <!--  over ride URI bridgeEndpoint -->
            <simple>${header.UPLOADURL}?throwExceptionOnFailure=false&useSystemProperties=true</simple>   <!-- bridgeEndpoint -->
        </setHeader>
        <setHeader headerName="CamelHttpMethod">
            <constant>POST</constant>
        </setHeader>
        <to uri="http4://apm-ts-query-svc-prod.app-api.aws-usw02-pr.io:443/v2/ts/upload?throwExceptionOnFailure=false" />
        <convertBodyTo type="java.lang.String" /> 
        <log message="HTTP4 POST Reponse Payload: ${body}" loggingLevel="INFO"/>
        <to uri="{{afteruploadLocation}}" />
    </route>

另外属性useOriginalBody抛出错误

无法在类org.apache.camel.builder.DeadLetterChannelBuilder上找到属性描述符useOriginalBody?

0 个答案:

没有答案