6 チェックポイントの使用方法
サブスクライバがサブスクリプション・ストリームをオープンすると、別の開始点を指定しないかぎり、ストリーム内の使用可能な最も早いポイントからイベントの使用が開始されます。別の位置から使用を開始するには、ストリーム位置を表すチェックポイントをアプリケーションが実行し、保存している必要があります。現在のストリーム位置を取得するには、NoSQLSubscription.getCurrentPosition()
を使用します。このメソッドはStreamPosition
クラスとして返します。実際のチェックポイントを実行するには、NoSQLSubscription.doCheckpoint()
を使用します。
チェックポイントを実行すると、NOSQLSubscription
インスタンスの構成時に指定したチェックポイント表を使用して、現在のストリーム位置がストアに保存されます。最新のチェックポイントのみがこの表に保存されます。他のチェックポイントを保存する場合は、チェックポイントを表すStreamPosition
クラスをシリアライズして、ディスクまたは選択したデータベースに保存できます。
ノート:
-
チェックポイント表の名前は自分で選択する必要があります。必ず、サブスクリプションに対して一意の名前にしてください。複数のサブスクリプションを使用する場合は、必ず、各サブスクリプションでそのチェックポイント表に一意の名前を使用してください。
-
チェックポイント表は、チェックポイント関連の情報を格納するために使用されます。考慮せずに表構造を削除または変更しないでください。表を削除すると、そのサブスクリプションのチェックポイントが失われます。チェックポイント表の削除後もサブスクリプションが続行されると、次のチェックポイントで、サブスクライバは予期したチェックポイントを特定できず、チェックポイントをスキップします。メソッド
onCheckpointComplete()
は、CheckpointFailureException
エラー・メッセージを取得します。現在のサブスクリプションを取り消して新しいものを再作成すると、新しいサブスクリプションによって、最初にチェックポイントが作成されます(その権限がある場合)。
メソッドNoSQLSubscription.doCheckpoint()
は非同期に実行されるため、チェックポイントがリクエストされたら、そのコールは制御を戻し、チェックポイントが完了すると、NoSQLSubscriber.onCheckpointComplete
がコールされます。同じサブスクリプションに対して実行されているチェックポイントに別の未処理のリクエストがあるときに、このメソッドをコールすると、CheckpointFailureException
が発生します。