我完全不熟悉Apache Camel,在完成「駱駝行動」之後,我仍然不太清楚基本功能。有沒有什麼方法可以將消息設置爲錯誤消息,而無需在bean方法中注入交換。Apache Camel:有沒有什麼辦法可以在沒有在bean方法中注入交換的情況下將消息設置爲故障?
在這裏,我可以提供例如:
class HttpBean{
public void parseIP(@Properties Map properties,@XPath("//ip") String ip){
properties.put("IP", ip);
}
}
名爲「parseIP」被設計使用XPath在體內解析ip和保存在屬性映射它的值的方法。但是,如果根本沒有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);
}
}
但是,這是最佳解決方案嗎?因爲一旦我向bean方法注入交換,我認爲它與駱駝處理器沒有區別,我失去了它的大部分優勢。駱駝的一個bean可以完成自己的工作,而不使用任何駱駝特定的API,但是一旦交換被注入,優勢就消失了。
有人可以幫我解決這個問題嗎?非常感謝。
包括你用來稱這個豆的路線...... – 2011-12-22 00:18:41