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を非同期にする必要があります。ポイントXに示すようにYとZで使用できるようにしたいのです。requestIdこれは、データベースへのログ記録に時間がかかり、パフォーマンスに影響を与えないように非同期にしたいためです。私を助けてください。

4

1 に答える 1

1

logRequestToDatabase はメソッドであると想定しているため、そのメソッドにコードを実装して非同期で実行できるため、Camel プロセス メソッドを続行できます。ポイント Y と Z が logRequestToDatabase 呼び出しの結果にアクセスする必要がある場合は、そのために JDK Future を使用できます。

于 2012-06-19T03:45:32.460 に答える