2016-07-01 5 views
1

現在、私は次のシナリオを持っている春の統合アプリケーションに取り組んでいます:読むと春の統合により、ページ分割REST-サービスからダウンロード

  1. REST-サービスからint-http:outbound-gateway読み取りページ分割された要素のリスト:約
  2. 各ページコンテンツは、後でスプリングバッチジョブによって処理されるフォルダに分割されて格納されます。

私は春の統合に関してかなり新しく、最終ページまですべてのページを読むために `int-http:outbound-gateway 'という種類のループを作成することが可能かどうかわかりません。

私たちは、2651ページに分割された66254要素について話しています。私が探しているのは、メモリの問題がなくても、すべてのページを読み込んでダウンロードし、データを収集するベストプラクティスです。

任意の提案は少し難しいがはい、それは、可能である

おかげ

答えて

1

を理解されるであろう。

リクエストのparamとしてRESTサービスにはpageが必要であると仮定します。したがって、サービスが空の結果を返すまでは、ページ#1からループを作成します(インクリメントpage param)。その<int-http:uri-variable>定義に

<int-http:outbound-gateway url="http://service/elements?page={page}"> 
    <int-http:uri-variable name="page" expression="headers['page']"/> 
</int-http:outbound-gateway> 

ご注意:

だから、あなたは、RESTサービスなどのための構成を有していてもよいです。最初からメッセージ<int-http:outbound-gateway>pageヘッダーのメッセージを1として送信する必要があります。

あなたが<recipient-list-router>、または<publish-subscribe-channel>、加入者のいずれかのような何かに送信する必要があり、このゲートウェイからの応答は、フォルダにまだあなたのsplitter格納するための項目です。

もう1人の加入者は少しスマートです。 <filter>から開始し、​​(REST呼び出しの結果)が空であることを確認します。これは、取得したことを意味し、取得するサービスのページはこれ以上ありません。それ以外の場合は、<header-enricher>を使用してpageヘッダーをインクリメントして置き換え、結果を最初の<int-http:outbound-gateway>に送信します。

関連する問題