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