От 3 до 4 обрабатывают запросы об ошибках для типов ошибок и статуса http

Я перемещаю файл обработки ошибок из Mule 3 в Mule 4 с помощью Anypoint Studio 7.

Мои запросы:

  • Как мне теперь сделать эту проверку, поскольку я не вижу ту же информацию в сообщении об исключении? #[exception.causedBy(org.mule.module.http.internal.request.ResponseValidatorException)]"
  • Где я могу найти свойство http.status сейчас? Я вижу ее как переменную, когда она равна 200, но когда выдается ошибка, она исчезает и не может найти ее в сообщении.
  • Где я могу найти список типов обработки ошибок?

Ниже перечислены типы обработки ошибок, которые меня особенно интересуют, но не знаю, является ли это правильным значением для типа ошибки:

HTTP:BAD_REQUEST
HTTP:UNAUTHORIZED
HTTP:FORBIDDEN
HTTP:RESOURCE_NOT_FOUND
HTTP:METHOD_NOT_ALLOWED
HTTP:NOT_ACCEPTABLE
HTTP:CONFLICT
HTTP:UNSUPPORTED_MEDIA_TYPE
HTTP:INTERNAL_SERVER_ERROR
HTTP:BAD_GATEWAY

Ниже приведен фрагмент кода Mule 3, который я переношу, и я думаю, что он основан на шаблоне:

<choice-exception-strategy name="global-exception-strategy">    
    <catch-exception-strategy when="#[exception.causedBy(org.mule.module.http.internal.request.ResponseValidatorException)]" doc:name="Caused By (org.mule.module.http.internal.request.ResponseValidatorException)">
        <choice doc:name="Choice">
            <when expression="#[message.inboundProperties['http.status'] == 401]">
                <set-variable variableName="errorMessage" value="Upstream service did not authorize the request." doc:name="Set Error Message"/>
                <flow-ref name="global-bad-gateway-response-sub-flow" doc:name="Bad Gateway Response"/>
            </when>
            <otherwise>
                <set-variable variableName="errorMessage" value="Upstream service internal error." doc:name="Set Error Message"/>
                <flow-ref name="global-bad-gateway-response-sub-flow" doc:name="Bad Gateway Response"/>                
            </otherwise>
        </choice>
    </catch-exception-strategy>
</choice-exception-strategy>        

<sub-flow name="global-bad-gateway-response-sub-flow">
    <set-property propertyName="http.status" value="401" doc:name="Set Status"/>
    <set-payload value="UNAUTHORIZED" doc:name="Set Error Code" mimeType="application/java"/>
    <flow-ref name="global-prepare-error-response-sub-flow" doc:name="Prepare Error Response"/>
</sub-flow>

Спасибо

1 ответ

В Mule 4 код состояния http для ответа об ошибке, расположенный здесь #[error.errorMessage.attributes['statusCode']]

Используйте этот вид проверки

#[contains(error.description,'internal server error (500).')]

Привет, Mule 4, существует 3 типа обработчиков ошибок.

  1. При распространении ошибки
  2. При ошибке Продолжить
  3. Попробуй поймать

Вы можете найти и определить тип ошибки, для которой вы хотите отловить ошибку, в конфигурации обработчика ошибок. Скриншот для справки.

Чтобы получить код статуса http, вы можете использовать #[error.muleMessage.attributes.StatusCode]

Для получения дополнительной информации и лучшего понимания обработки ошибок Mule 4, пожалуйста, обратитесь:

https://www.tutorialsatoz.com/error-handling-in-mule-4/

https://www.tutorialsatoz.com/retry-mechanism-until-success-vs-flow-reference/

Другие вопросы по тегам