К сожалению, Camel неправильно устанавливает код Http-статуса.Приведенное ниже решение немного запутано, но оно работает.Это также может быть решено в XML с помощью простого языкового предиката, но почему-то это не помогло мне, поэтому я использовал Java для предиката.
Чертеж:
<bean id="myBean" class="com.example.MyBean" />
<onException>
<exception>org.apache.camel.http.common.HttpOperationFailedException</exception>
<onWhen>
<method ref="myBean" method="parseException" />
</onWhen>
<handled>
<constant>true</constant>
</handled>
<to uri="jms:redmine_errors"/>
</onException>
Java:
package com.example;
public class MyBean {
public boolean parseException(Exchange exchange){
return exchange.getProperty("CamelExceptionCaught")
.toString().contains("statusCode: 500");
}
}