在完成“Camel in Action”之后,我对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可以在不使用任何Camel特定API的情况下完成自己的工作,但是一旦注入交换,优势就消失了 .
有人可以帮我解决这个问题吗?非常感谢 .
2 回答
只根据bean的结果从路径设置一个错误...如果属性IP为null,则设置错误等...
如果有人遇到这个问题,并且正在寻找有关如何在POJO,消息或有效负载模式下从CXF设置Soap故障的详细信息,请查看Talend中的此链接:
https://help.talend.com/display/TalendESBMediationDeveloperGuide54EN/3.8.10+How+to+throw+a+SOAP+Fault+from+Camel
这是一段代码: