NoSQLSubscriptionConfigの使用方法

サブスクリプションを構成するには、oracle.kv.pubsub.NoSQLSubscriptionConfigオブジェクトを構築します。その後、このオブジェクトをNoSQLSubscriber実装に提供し、さらに、コールされたときにこのオブジェクトを返すNoSQLSubscriber.getSubscriptionConfig()を実装します。パブリッシャを構築する際には、それにNoSQLSubscriber実装を提供します。これにより、パブリッシャは、サブスクリプションの作成方法を理解するためにNoSQLSubscriber.getSubscriptionConfig()をコールします。サブスクライバの実装およびStreamsパブリッシャの使用方法を参照してください。

NoSQLSubscriptionConfigオブジェクトを構築するには、次のようにNoSQLSubscriptionConfig.Builderを使用します。

final NoSQLSubscriptionConfig subConfig =
	new NoSQLSubscriptionConfig.Builder("ChkptTable")
    .setSubscribedTables("UserTable")
    .setStreamMode(NoSQLStreamMode.FROM_NOW)
    .build(); 

この構成により、サブスクリプションは次のように動作します。

  • ChkptTableというチェックポイント表を使用します。チェックポイント表の詳細は、チェックポイントの使用方法を参照してください。ここで使用する表名は、自分で選択し、サブスクリプションに対して一意である必要があります。複数のサブスクリプションを使用する場合は、各サブスクリプションでチェックポイント表に一意の名前を使用する必要があります。この表は自動的に作成されます。

    セキュアなストアを使用する場合、チェックポイント表への読取り/書込みアクセス権が必要です。チェックポイント表が存在しない場合は、CREATE TABLE権限も必要です。詳細は、次を参照してください。
    • セキュアなストアへの接続の詳細は、セキュアなストアへの認証を参照してください。

    • セキュアなストアの認可を構成する方法の詳細は、セキュリティ・ガイド権限を参照してください。

  • UserTableというユーザー表に対して実行されたすべてのwriteアクティビティをサブスクライブします。サブスクリプションは、ユーザー定義の表について作成できます。システム表に対する更新はストリームされません。次を使用して、複数の表をサブスクライブできます。

    new NoSQLSubscriptionConfig.Builder("ChkptTable")
     .setSubscribedTables("UserTable", "PriceTable", "InventoryTable") .... 

    setSubscribedTables()をコールしない場合、サブスクリプションはストア内のすべての表をサブスクライブします。サブスクリプションがストア内のすべての表を対象とする場合、サブスクリプションが設定された後に(DDL CREATE TABLE操作を使用して)新しい表が作成されると、新しい表に作成されたそれぞれの行のputイベントすべてがストリームに含まれます。

  • ストリーム・モードをNoSQLStreamMode.FROM_NOWに設定します。ストリーム・モードは、パブリッシャがイベントの取得を開始するストリーム内の位置を示します。詳細は、NoSQLStreamModeを参照してください。

サブスクリプション構成を作成したら、それをNoSQLSubscriber実装に提供します。この実装でその後、次のようにNoSQLSubscriber.getSubscriptionConfig()メソッドを介してそれを使用できるようにする必要があります。

class mySubscriber implements NoSQLSubscriber {

    ...

    private final NoSQLSubscriptionConfig config;

    ...

    // Generally the constructor will require more than just
    // the subscription configuration. The point here is that you
    // must somehow provide the configuration object to
    // your subscriber implemention because that is how
    // your publisher will get it.
    mySubscriber(NoSQLSubscriptionConfig config, ....) {

        ...

        this.config = config;

        ...
    }

    @Override
    public NoSQLSubscriptionConfig getSubscriptionConfig() {
        return config;
    } 
        
    ...

Streamsアプリケーションを実装する際に、サブスクライバ実装を使用します。サブスクライバに対するgetSubscriptionConfig()メソッドにより、パブリッシャは、監視する表などを理解します。Streamsパブリッシャの使用方法を参照してください。

空のストリームの有効期限を指定するには、NoSQLSubscriptionConfig.setEmptyStreamDuration()メソッドを使用します。有効期限は、ストリームが空になったときにのみ開始され、その期限が過ぎると、パブリッシャは空のストリームを停止します。空のストリームのデフォルトの有効期限は60秒です。ユーザーは、setEmptyStreamDuration()メソッドで空のストリームのデフォルトの有効期限をオーバーライドできます。

この項では、NoSQLSubscriptionConfigを使用して設定できる一部のオプションのみを示しています。構成オプションの完全なリストは、Java Direct Driver APIリファレンスNoSQLSubscriptionConfigおよびNoSQLSubscriptionConfig.Builderを参照してください。