2 StreamOperationクラスの使用方法

Streamsアプリケーションは、サブスクライバを実装することで機能します。サブスクライバは、対象となる表への書込み操作で構成されるイベント・ストリームを受け取ります。

詳細は、サブスクライバの実装を参照してください。

アプリケーションがサブスクリプション・ストリームで受け取るそれぞれのイベントは、oracle.kv.pubsub.StreamOperationとして表されます。これらのイベントはそれぞれ、アプリケーションがサブスクライブする表に対するputまたはdelete操作を表します。

詳細は、Javaダイレクト・ドライバAPIリファレンスoracle.kv.pubsub.StreamOperationクラスの概要を参照してください

StreamOperationインタフェースには、次のメソッドが用意されています。

  • StreamOperation.getType()

    StreamOperation.Typeオブジェクトを返します。これは列挙型定数であり、deleteまたはputです。たとえば:

    // so is a StreamOperation object. It is obtained using
    // NoSQLSubscriber.onNext().
    switch (so.getType()) {
        case PUT:
            {
                // Process the put operation here.
            }
            break;
        case DELETE:
            {
                // Process the delete operation here.
            }
            break;
        default:
            // Received an unknown and therefore illegal operation type.
            throw new IllegalStateException("... exception message ...");
    } 
  • StreamOperation.asDelete()

    操作をStreamOperation.DeleteEventオブジェクトとして返します。このオブジェクトには、delete操作に関連付けられた主キーのみが含まれます。

    // so is a StreamOperation object. It is obtained using
    // NoSQLSubscriber.onNext().
    StreamOperation.DeleteEvent de = so.asDelete();
    PrimaryKey pk = de.getPrimaryKey();
  • StreamOperation.asPut()

    操作をStreamOperation.PutEventオブジェクトとして返します。このオブジェクトを使用すると、put操作によって変更された行を取得できます。ここで返される行は、put操作が実行されたの行の状態を表します。

    // so is a StreamOperation object. It is obtained using
    // NoSQLSubscriber.onNext().
    StreamOperation.PutEvent pe = so.asPut();
    Row row = pe.getRow();
  • StreamOperation.getRepGroupId()

    このwrite操作が実行されたシャードIDを(intとして)返します。

  • StreamOperation.getSequenceId()

    この操作に関連付けられた一意の順序IDを返します。このIDは、指定されたパブリッシャに関連付けられているストリーム操作を一意に識別します。

    これらのIDを使用して、指定されたキーについて検出された操作を順序付けできます。サブスクリプションAPIでは、特定のキーのイベントの順序が、これらの操作がOracle NoSQL Databaseで適用される順序と同じであることが保証されます。サブスクリプションAPIでは、1つのキーを超える操作の順序については保証されません。