クエリページネーションサポートの追加

DevKit は、Studio 6 および Mule 3 とのみ互換性があります。Mule 4 Connector を作成するには、 「Mule SDK」ドキュメント​を参照してください。

大量のレコードを処理する場合は、クエリページネーションが必要になります。この主な利点は、Mule Runtime がメモリ内のすべてのレコードを同時に処理する代わりに、一度にまとまったレコードを部分的に処理する場合のパフォーマンスです。

コネクタにページネーションを実装するには、接続する​サービスの API​ で​ページネーション機能が提供される​ことを確認してください。
コネクタでページネーションを有効にすると、返されるプロセッサの種別が変更される可能性があるため、(Mule Runtime 3.5.x より前の) 古い Mule バージョンとの後方互換性がなくなる可能性があります。

ページネーションの有効化

コネクタでのページネーションの有効化は非常に簡単です。​@Processor​ メソッドが満たす必要がある条件は 3 つのみです。

  1. メソッドに ​@Paged​ のアノテーションを付加する

  2. org.mule.api.streaming.PagingConfiguration​ 型のパラメータを受け取る必要がある

  3. 戻り値のデータ型は ​ProviderAwarePagingDelegate​ である必要がある

@Paged
@Processor
    public ProviderAwarePagingDelegate query(String query, final PagingConfiguration pagingConfiguration) throws Exception
{
    return new CustomPagingDelegate(query,pagingConfiguration);
}

public QueryResult executeQuery(String query, String nextItem) throws Exception {
        myServiceClient.query(query,nextItem);
}
java

注意​: @Processor​ メソッドと操作 ​executeQuery​ の違い。プロセッサは、後で (ページを取得するときに) すでに接続されているコネクタインスタンスを受け取り、それに応じて ​executeQuery​ を実行する ​PagingDelegate​ を返します。

CustomPagingDelegate の作成

ProviderAwarePagingDelegate​ は、ページネーションが実行される場所です。2 種類の引数 (この場合は T と P) が必要な ​ProviderAwarePagingDelegate​ 抽象クラスを見てみましょう。次のクラス定義では、T は返されるデータを表し、P はデータのプロバイダである Anypoint Connector を表します。

メソッド ​getPage(P provider)​ および ​getTotalResults(P provider)​ を実行すると、Anypoint Connector DevKit は接続プールから適切なコネクタのインスタンスを選択します。

ProviderAwarePagingDelegate​ の独自のバージョンを作成するには、それを拡張する必要があります。このクラスの単純な拡張例を次に示します。

関連情報