1

何日も解決しようとしているキャメルルートに問題があります。

私はこの技術的な問題の専門家ではないため、知っておくべき情報が省略されている可能性があります...

まず、私のルートの目標は、jaxb マーシャリングを介して xml リクエストから xml レスポンスをリクエストし、エンドポイント経由で離れたサーバーに接続することです。

このルートには特別なものはありません。次のルートです。

routeX.from("direct:requeteObjects)
.setHeader("element")
.constant(element)
.to("bean:importStructureI2VGestionnaireImpl?method=sendRequestObjects)                 
.to(endpoint)
.to("bean:importGestionnaireImpl?method=" + getObjects)

サーバーは応答を分割して送信します。たとえば、30 個のオブジェクトのパッケージによって受信される 3000 個のオブジェクトを期待しています。

リクエスト「sendRequest」を作成するメソッドが更新され、次のオブジェクトを要求します。

応答を処理した後、この要求をエンドポイントに送り返します。エンドポイントは応答を取得し、応答を処理する getObjects メソッドに送信されます。

すべてがうまく機能し、応答が得られています。しかし、5 つの要求/応答の後、エンドポイントに入った後、何も起こりません。コードをデバッグすると、コードが AsyncProcessor クラス、プロセス メソッドなどで進行し続けるため、ルート内にループがあるように見えます。ログも何もありません。止まりません。

なぜそのようになるのか、私にはわかりません。同じルート定義を使用していたからかもしれないと思いました。そのため、リクエストごとにルートを作成し、古いルートを停止して削除しました。これで、6つの応答が得られます。しかし、その後、同じ問題が発生します。

コンテキストの最大エンドポイント キャッシュ サイズとコンテキストの最大キャッシュ プール サイズを、デフォルト値に 10 を掛けて設定してみました。値が考慮されているかどうかを確認しました。考慮されました。それでも、私は同じ問題を抱えています。

また、交換オブジェクトは常に新しいものであるため、私の応答が 1 つの大きな交換オブジェクト内に積み重なることはありません。

どこに問題があるか知っていますか?コンテキストが大きくなりすぎる可能性はありますか? それともエンドポイント?どこを見ればいいですか?

回答ありがとうございます。さらに情報が必要な場合は、喜んで追加します。

PS : このトピックの回答を適用してみました:無限に実行される routeContext 内のキャメル ルートですが、変更はありません :-(

4

0 に答える 0