Почему стратегия исключений Mule такая болтливая?

В моем приложении Mule я настроил некоторые потоки для использования стратегии исключения catch для выполнения специальной обработки. В этих случаях я хочу вставить ошибку и исходную полезную нагрузку в хранилище объектов. Повсюду, стратегия исключений по умолчанию в порядке.

<flow name="saveLookup">
    <vm:inbound-endpoint exchange-pattern="one-way"  ref="Lookup_Save_VM" />
    <component>
      <spring-object bean="insertLookupMDCvalues"/>
    </component>
    <set-variable variableName="originalPayload" value="#[payload]"/>
    <json:json-to-object-transformer returnClass="com.company.LookupData"/>
    <set-variable variableName="transactionId" value="#[payload.transactionId]"/>
    <transactional action="ALWAYS_BEGIN">
        <logger message="${lookup.SQL}" level="INFO"/>
        <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="saveLookup" queryTimeout="-1" connector-ref="JdbcConnector" />
        <foreach collection="#[payload.transactional.lookupItems.items]">
            <logger message="${lookup.item.SQL}" level="INFO" />
            <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="saveLookupItem" queryTimeout="-1" connector-ref="JdbcConnector"/>
        </foreach>
    </transactional>
    <component>
      <spring-object bean="clearLookupMDCvalues"/>
    </component>        
    <catch-exception-strategy>
        <message-properties-transformer scope="invocation">
            <add-message-property key="errorMap" value="#[['id' : transactionId, 'body' : originalPayload, 'error' : exception.summaryMessage]]"/>
        </message-properties-transformer>
        <choice>
            <when expression="#[message.inboundProperties['resubmit']]">
                <logger message="Resubmission of lookup data failed, saving to Dead Letter object store. ID=#[transactionId]" level="INFO"/>
                <objectstore:store config-ref="lookupDeadLetterOS" key="#[transactionId]" overwrite="true" value-ref="#[errorMap]"/>
            </when>
            <otherwise>
                <logger message="Saving lookup data failed, saving to Error object store. ID=#[transactionId]" level="INFO"/>
                <objectstore:store config-ref="lookupErrorOS" key="#[transactionId]" overwrite="true" value-ref="#[errorMap]"/>
            </otherwise>
        </choice>
        <set-payload value="Error: #[exception.summaryMessage]"/>
        <component>
          <spring-object bean="clearLookupMDCvalues"/>
        </component>                 
    </catch-exception-strategy>
</flow>

Моя проблема заключается в том, что при возникновении ошибки, скажем, исключения Null Pointer в компоненте foreach, я вижу четыре оператора журнала ERROR для каждого события:

Стек исключений: 1. null (java.lang.NullPointerException)...и так далее. Это зарегистрировано дважды.CatchMessagingExceptionStrategy - Сообщение. Не удалось выполнить выражение "payload.transactional.lookupItems.items". (Org.mule.api.expression.ExpressionRuntimeException). Полезная нагрузка сообщения имеет тип: LookupDataDefaultMessagingExceptionStrategy - Сообщение. Не удалось выполнить выражение «payload.transactional.lookupItems.items». (Org.mule.api.expression.ExpressionRuntimeException). Полезная нагрузка сообщения имеет тип: LookupData

Я думал, что стратегия исключений для конкретного потока должна переопределять стратегию по умолчанию. Зачем дублировать сообщения журнала, и есть ли способ их скрыть? Я бы хотел избежать настройки стратегии исключений по умолчанию, поскольку в большинстве потоков это вполне приемлемое поведение.

Ответы на вопрос(1)

Ваш ответ на вопрос