存储文件正文而不中断路由

时间:2017-04-18 10:25:08

标签: apache-camel

基本上我有以下路线。

    from("servlet://test/?matchOnUriPrefix=true&servletName=testservlet")
            .log("Wire tap beginning")
            .streamCaching()
            .wireTap("seda:tap").copy(true).end()
            .log("End of wiretap")
            .log("request sent to provider ")
            .to("https://someservice.com" + "?bridgeEndpoint=true&throwExceptionOnFailure=false")
            .log("request sent to END");

以上路线将请求重定向到“https://someservice.com”。

https://someservice.com”请求是接受的'发布'电话 - text / plain;字符集= UTF-8 - gzip文件正文

我的意图是在不中断实际路线的情况下保存gzip正文。我使用'窃听'的意图是实现相同的,即在单独的线程中保存请求主体。

当我提出请求时,我没有看到'https://someservice.com'在一个单独的线程中被调用,基本上执行是按照以下方式执行的。

首先调用1.wiretap端点,在窃听(“seda:tap”)处理完成后再执行一次 2.调用“https://someservice.com”。

添加seda代码:wiretap

    from("seda:tap")
            .unmarshal().gzip()
            .to("seda:storedata");

    from("seda:storedata")
            .process(new Processor() {
                @Override
                public void process(Exchange exchange) throws Exception {
                    //store the data
                    Message message = exchange.getIn();
                    String result=message.getBody(String.class);
                }});

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

告诉seda不要等待回复

.wireTap("seda:tap?waitForTaskToComplete=Never").copy(true).end()