Apache Camel自定义退出错误

时间:2017-03-27 11:04:56

标签: json apache-camel output processor

我有以下Apache驼峰来发布一个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对象发送到浏览器。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

您有多种不同的选择。

简单的:

  • 从您的处理器中抛出异常,然后在onException中的路径中捕获异常,或者使用驼峰doTry

  • 围绕您的处理器
  • 在处理器中设置特殊的Exchange属性,然后在路由中对其进行分析,并根据需要分配流量。 ...