NoSQLSubscriptionの使用方法

サブスクリプションを制御するには、oracle.kv.pubsub.NoSQLSubscriptionを使用します。これは、サブスクライブしている表に対する操作のリクエスト、チェックポイントの実行、ストリームの終了などに使用されます。これは、NoSQLSubscriber実装の一部として使用されます。

NoSQLSubscriptionインタフェースはorg.reactivestreams.Subscriptionの拡張であるため、NoSQLSubscription実装クラスにはNoSQLSubscriptionを拡張すれば十分です。実装クラスがNoSQLSubscriber.onSubscribe()を実装する場合、通常はNoSQLSubscription.request()をコールします。これは、最初に設定された数のイベントをサブスクライバに配信するよう要求します(これらは、NoSQLSubscriber.onNext()を使用して処理されます)。

...
private NoSQLSubscription subscription;
...

@Override
public void onSubscribe(Subscription s) {
    subscription = (NoSQLSubscription) s;
    // request 100 store operations be streamed to this
    // subscriber.
    s.request(100);
    } 

NoSQLSubscriptionオブジェクトで実行できる重要なアクションは次のとおりです。

  • NoSQLSubscription.cancel()を使用して、ストリームを取り消します。

  • サブスクライブしている表に対してさらに操作をリクエストします。

    無限の数の操作をストリームする場合、Long.MAX_VALUEを使用できます。これにより、サブスクライバが1秒当たり10億個の操作を処理できると仮定すると、584年間ストリームできます。

    アプリケーションの実行時間の最初に、操作が使用される前にリクエストが行われた場合は、NoSQLSubscriptionConfig.setStreamMode()によって識別された位置から操作が開始されます。操作が使用された後にリクエストが行われた場合は、最後に使用された操作の直後のストリーム内のポイントから操作が開始されます。詳細は、NoSQLStreamModeを参照してください。

  • チェックポイントを取得します。チェックポイントの詳細は、チェックポイントの使用方法を参照してください。

  • NoSQLSubscription.getSubscribedTables()メソッドを使用して、ストリームの存続時間中にいつでも、現在サブスクライブしている表のリストを取得します。サブスクリプションが取り消されるか、停止した場合は、SubscriptionFailureExceptionが発生します。

  • NoSQLSubscription.subscribeTable()メソッドを使用して、実行中のサブスクリプション・ストリームに表を非同期に追加します。変更結果は、NoSQLSubscriber.onChangeResult()コールバック・メソッドを介して通知されます。

  • NoSQLSubscription.unsubscribeTable()メソッドを使用して、実行中のサブスクリプション・ストリームから表を非同期に削除します。変更結果は、NoSQLSubscriber.onChangeResult()コールバック・メソッドを介して通知されます。

NoSQLSubscriptionでサポートされている操作の完全なリストは、Java Direct Driver APIリファレンスNoSQLSubscriptionを参照してください。