すべてのプロダクト
Search
ドキュメントセンター

Tablestore:キュー管理

最終更新日:Dec 28, 2024

このトピックでは、タイムラインモデルを使用する場合のキューの管理方法について説明します。

Queueインスタンスの取得

Queueは、メッセージキューの抽象化です。Queueは、TimelineStoreの識別子のすべてのメッセージに対応します。TimelineStoreの必要な操作を呼び出して、Queueインスタンスを作成できます。

TimelineIdentifier identifier = new TimelineIdentifier.Builder()
        .addField("timeline_id", "group_1")
        .build();

// QueueはTimelineStoreの識別子に対応します。
TimelineQueue timelineQueue = timelineStore.createTimelineQueue(identifier);

Queueインスタンスは、TimelineStoreの識別子に対応するメッセージキューを管理します。このインスタンスは、Store、StoreAsync、BatchStore、Delete、Update、UpdateAsync、Get、Scanなどの操作を提供します。

Store

この操作を呼び出して、メッセージを同期的に保存できます。この操作を使用するには、SequenceIdを手動で設定するか、自動インクリメント列を使用して設定します。

timelineQueue.store(message);//自動インクリメント列を使用してSequenceId値を生成します。
timelineQueue.store(sequenceId, message);//SequenceId値を手動で設定します。

StoreAsync

この操作を呼び出して、メッセージを非同期的に保存できます。コールバックをカスタマイズして、成功または失敗したストレージを処理できます。この操作はFuture<TimelineEntry>を返します。

TimelineCallback callback = new TimelineCallback() {
    @Override
    public void onCompleted(TimelineIdentifier i, TimelineMessage m, TimelineEntry t) {
        // 成功時に何かを実行します。
    }

    @Override
    public void onFailed(TimelineIdentifier i, TimelineMessage m, Exception e) {
        // 失敗時に何かを実行します。
    }
};

timelineQueue.storeAsync(message, callback);//自動インクリメント列を使用してSequenceId値を生成します。
timelineQueue.storeAsync(sequenceId, message, callback);//SequenceId値を手動で設定します。

BatchStore

この操作を呼び出して、コールバック方式と非コールバック方式で複数のメッセージを保存できます。コールバックをカスタマイズして、成功または失敗したストレージを処理できます。

timelineQueue.batchStore(message);//自動インクリメント列を使用してSequenceId値を生成します。
timelineQueue.batchStore(sequenceId, message);//SequenceId値を手動で設定します。

timelineQueue.batchStore(message, callback);//自動インクリメント列を使用してSequenceId値を生成します。
timelineQueue.batchStore(sequenceId, message, callback);//SequenceId値を手動で設定します。

Get

この操作を呼び出して、SequenceId値に基づいて単一の行を読み取ることができます。メッセージが存在しない場合、エラーは発生せず、システムは空の文字列を返します。

timelineQueue.get(sequenceId);

GetLatestTimelineEntry

この操作を呼び出して、最新のメッセージを読み取ることができます。メッセージが存在しない場合、エラーは発生せず、システムは空の文字列を返します。

timelineQueue.getLatestTimelineEntry();

GetLatestSequenceId

この操作を呼び出して、最新のメッセージのSequenceId値を取得できます。メッセージが存在しない場合、エラーは発生せず、システムは0を返します。

timelineQueue.getLatestSequenceId();

Update

この操作を呼び出して、SequenceId値に基づいてメッセージを同期的に更新できます。

TimelineMessage message = new TimelineMessage().setField("text", "Timeline is fine.");

//新しいフィールドでメッセージを更新します
message.setField("text", "new value");
timelineQueue.update(sequenceId, message);

UpdateAsync

この操作を呼び出して、SequenceId値に基づいてメッセージを非同期的に更新できます。コールバックをカスタマイズして、成功または失敗した更新を処理できます。この操作はFuture<TimelineEntry>を返します。

TimelineMessage oldMessage = new TimelineMessage().setField("text", "Timeline is fine.") ;
TimelineCallback callback = new TimelineCallback() {
    @Override
    public void onCompleted(TimelineIdentifier i, TimelineMessage m, TimelineEntry t) {
        // 成功時に何かを実行します。
    }

    @Override
    public void onFailed(TimelineIdentifier i, TimelineMessage m, Exception e) {
        // 失敗時に何かを実行します。
    }
};

TimelineMessage newMessage = oldMessage;
newMessage.setField("text", "new value");
timelineQueue.updateAsync(sequenceId, newMessage, callback);

Delete

この操作を呼び出して、SequenceId値に基づいて1行を削除できます。

timelineQueue.delete(sequenceId);

Scan

この操作を呼び出して、Scanパラメーターに基づいて、単一のQueue内のメッセージを前方または後方に順番に読み取ることができます。この操作はIterator<TimelineEntry>を返します。イテレーターを使用してすべての結果セットを反復処理できます。

ScanParameter scanParameter = new ScanParameter().scanBackward(Long.MAX_VALUE, 0);

timelineQueue.scan(scanParameter);