Я совершенно новичок в Apache Camel, после того, как я закончил «Верблюд в действии», я до сих пор не очень разбираюсь в основных функциях. Есть ли способ установить сообщение как сообщение об ошибке, не вводя обмен в метод bean.
Здесь я могу привести пример:
class HttpBean{
public void parseIP(@Properties Map properties,@XPath("//ip") String ip){
properties.put("IP", ip);
}
}
Метод с именем "parseIP" предназначен для синтаксического анализа ip в теле с использованием xpath и сохранения его значения в карте свойств. Но если в теле вообще нет тега ip, я хочу создать сообщение об ошибке и завершить процесс (не просто выдать исключение, которое будет рассматриваться как исправляемую ошибку, здесь я хочу исправить ошибку). Для достижения этой цели я могу использовать следующий код:
class HttpBean{
public void parseIP(@Properties Map properties,@XPath("//ip") String ip, Exchange exchange){
if(ip == null){
exchange.getIn().setFault(true);
exchange.getIn().setBody("Ip is missing");
}
properties.put("IP", ip);
}
}
Но разве это лучшее решение? Потому что, как только я внедряю обмен в бобовый метод, я думаю, что он ничем не отличается от верблюжьего процессора, и я теряю большую часть его преимущества. Боб в верблюде может завершить свою собственную работу без использования какого-либо специального API для Camel, но как только обмен введен, преимущество исчезает.
Кто-то может помочь мне с вопросом? Большое спасибо.