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

  • 在处理器中设置特殊交换 属性 然后在路由中分析它并根据需要分叉您的流程。 ...