0
from(routeA)
.process(new Processor() {
    public void process(Exchange exchange) throws Exception {
        //Point X
        int requestId = logRequestToDatabase(exchange.getIn().getBody(String.class));
        // need to use this requestId at point Y and Z..
    }
})
.wireTap(routeT)
.to(routeB)
.process(new Processor() {
    public void process(Exchange exchange) throws Exception {
        //Point Y
        // i need the requestId from X here to mark it to log the response to database...
    }
});
from(routeT)
.to(routeC)
.process(new Processor() {
    public void process(Exchange exchange) throws Exception {
        //Point Z
        // i need the requestId from X here to mark it to log the response to database...
    }
});

我需要点 X 是异步的。我希望requestIdX 点中所示的在 Y 和 Z 中可用。这是因为,记录到数据库需要时间,我希望它是异步的,这样它就不会影响性能。请帮我。

4

1 回答 1

1

我假设 logRequestToDatabase 是一个方法,因此您可以在该方法中实现代码以运行异步,因此 Camel 进程方法可以继续。如果 Y 点和 Z 点需要访问 logRequestToDatabase 调用的结果,您可以为此使用 JDK Future。

于 2012-06-19T03:45:32.460 回答