Apache Camel 自定义退出错误
Apache Camel Custom Exit Error
我有以下 Apache camel 来制作 post 到 URL。
.setHeader(HTTP_PATH,simple("/product-catalog/insert"))
.setHeader(HTTP_METHOD,constant("POST"))
.setHeader(CONTENT_TYPE, constant("application/json"))
.setBody(constant(""))
.process(new ProductProcessor())
.marshal().json(JsonLibrary.Jackson)
.to("{{products.endpoint}}?bridgeEndpoint=true")
.unmarshal().string()
.setHeader("CamelJacksonUnmarshalType", constant(ProductInsertResponse.class.getName()))
.unmarshal(ProductResponse)
.process(new ProductResponseProcessor())
这次调用后,我想在处理器上检查这个新产品的产品代码是否正确,如下:
public class ProductResponseProcessor implements Processor
{
@Override
public void process(Exchange exchange) throws Exception {
ProductInsertResponse response = (ProductInsertResponse) exchange.getIn().getBody();
if(response.productCode().equals("0")){
// The product code is not correct
// And I would like to return a JSON to the browser with the following format
// {"response":"Error","errorString":"Error insert product" ,"errorCode":"0"}
}
}
}
如果代码不是 0,我想继续我在 apache camel 流程中的其他任务。我不知道如何在这一点上切断路线并在我们的产品代码等于0的情况下向浏览器发送一个JSON对象。
非常感谢。
你有很多不同的选择。
简单的:
从您的处理器中抛出异常,然后在 onException
中的路由中捕获它,或者用驼峰包围您的处理器 doTry
在处理器中设置特殊交换 属性 然后在路由中分析它并根据需要分叉您的流程。
...
我有以下 Apache camel 来制作 post 到 URL。
.setHeader(HTTP_PATH,simple("/product-catalog/insert"))
.setHeader(HTTP_METHOD,constant("POST"))
.setHeader(CONTENT_TYPE, constant("application/json"))
.setBody(constant(""))
.process(new ProductProcessor())
.marshal().json(JsonLibrary.Jackson)
.to("{{products.endpoint}}?bridgeEndpoint=true")
.unmarshal().string()
.setHeader("CamelJacksonUnmarshalType", constant(ProductInsertResponse.class.getName()))
.unmarshal(ProductResponse)
.process(new ProductResponseProcessor())
这次调用后,我想在处理器上检查这个新产品的产品代码是否正确,如下:
public class ProductResponseProcessor implements Processor
{
@Override
public void process(Exchange exchange) throws Exception {
ProductInsertResponse response = (ProductInsertResponse) exchange.getIn().getBody();
if(response.productCode().equals("0")){
// The product code is not correct
// And I would like to return a JSON to the browser with the following format
// {"response":"Error","errorString":"Error insert product" ,"errorCode":"0"}
}
}
}
如果代码不是 0,我想继续我在 apache camel 流程中的其他任务。我不知道如何在这一点上切断路线并在我们的产品代码等于0的情况下向浏览器发送一个JSON对象。
非常感谢。
你有很多不同的选择。
简单的:
从您的处理器中抛出异常,然后在
onException
中的路由中捕获它,或者用驼峰包围您的处理器doTry
在处理器中设置特殊交换 属性 然后在路由中分析它并根据需要分叉您的流程。 ...