何日も解決しようとしているキャメルルートに問題があります。
私はこの技術的な問題の専門家ではないため、知っておくべき情報が省略されている可能性があります...
まず、私のルートの目標は、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 内のキャメル ルートですが、変更はありません :-(