基本上我有以下路线。
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);
}});
如何实现这一目标?
答案 0 :(得分:0)
告诉seda不要等待回复
.wireTap("seda:tap?waitForTaskToComplete=Never").copy(true).end()