Apache camel 在不中断路由的情况下存储文件正文
基本上我有如下的路线Apache camel 在不中断路由的情况下存储文件正文,apache-camel,Apache Camel,基本上我有如下的路线 from("servlet://test/?matchOnUriPrefix=true&servletName=testservlet") .log("Wire tap beginning") .streamCaching() .wireTap("seda:tap").copy(true).end() .log("End of wiretap")
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");
上述路由将请求重定向到“”
“”请求是接受的“Post”呼叫
-文本/纯文本;字符集=UTF-8
-gzip文件体
我的意图是在不中断实际路线的情况下保存gzip主体。我使用“wiretap”的目的是实现同样的目的,即将请求主体保存在单独的线程中
当我发出请求时,我看不到“”在单独的线程中被调用,基本上执行方式如下
1.首先调用wiretap端点,在wiretap(“seda:tap”)处理完成后调用一次,然后
2.“被援引
添加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);
}});
如何做到这一点?告诉seda不要等待回复
.wireTap("seda:tap?waitForTaskToComplete=Never").copy(true).end()