Topik ini menjelaskan cara mengelola antrian saat menggunakan model Timeline.
Mendapatkan Instance Antrian
Antrian adalah abstraksi dari antrian pesan. Sebuah antrian sesuai dengan semua pesan dari pengenal di TimelineStore. Anda dapat memanggil operasi yang diperlukan dari TimelineStore untuk membuat instance Antrian.
TimelineIdentifier identifier = new TimelineIdentifier.Builder()
.addField("timeline_id", "group_1")
.build();
// Antrian sesuai dengan pengenal dari TimelineStore.
TimelineQueue timelineQueue = timelineStore.createTimelineQueue(identifier);Instance Antrian mengelola antrian pesan yang sesuai dengan pengenal dari TimelineStore. Instance ini menyediakan operasi seperti Store, StoreAsync, BatchStore, Delete, Update, UpdateAsync, Get, dan Scan.
Store
Anda dapat memanggil operasi ini untuk menyimpan pesan secara sinkron. Untuk menggunakan operasi ini, Anda dapat menetapkan SequenceId secara manual atau menggunakan kolom penambahan otomatis.
timelineQueue.store(message);//Menghasilkan nilai SequenceId menggunakan kolom penambahan otomatis.
timelineQueue.store(sequenceId, message);//Menetapkan nilai SequenceId secara manual.StoreAsync
Anda dapat memanggil operasi ini untuk menyimpan pesan secara asinkron. Anda dapat menyesuaikan callback untuk memproses penyimpanan yang berhasil atau gagal. Operasi ini mengembalikan Future<TimelineEntry>.
TimelineCallback callback = new TimelineCallback() {
@Override
public void onCompleted(TimelineIdentifier i, TimelineMessage m, TimelineEntry t) {
// lakukan sesuatu ketika berhasil.
}
@Override
public void onFailed(TimelineIdentifier i, TimelineMessage m, Exception e) {
// lakukan sesuatu ketika gagal.
}
};
timelineQueue.storeAsync(message, callback);//Menghasilkan nilai SequenceId menggunakan kolom penambahan otomatis.
timelineQueue.storeAsync(sequenceId, message, callback);//Menetapkan nilai SequenceId secara manual.BatchStore
Anda dapat memanggil operasi ini untuk menyimpan beberapa pesan dalam metode callback dan non-callback. Anda dapat menyesuaikan callback untuk memproses penyimpanan yang berhasil atau gagal.
timelineQueue.batchStore(message);//Menghasilkan nilai SequenceId menggunakan kolom penambahan otomatis.
timelineQueue.batchStore(sequenceId, message);//Menetapkan nilai SequenceId secara manual.
timelineQueue.batchStore(message, callback);//Menghasilkan nilai SequenceId menggunakan kolom penambahan otomatis.
timelineQueue.batchStore(sequenceId, message, callback);//Menetapkan nilai SequenceId secara manual.Get
Anda dapat memanggil operasi ini untuk membaca satu baris berdasarkan nilai SequenceId. Jika tidak ada pesan yang tersedia, sistem tidak akan menghasilkan kesalahan dan akan mengembalikan string kosong.
timelineQueue.get(sequenceId);GetLatestTimelineEntry
Anda dapat memanggil operasi ini untuk membaca pesan terbaru. Jika tidak ada pesan yang tersedia, sistem tidak akan menghasilkan kesalahan dan akan mengembalikan string kosong.
timelineQueue.getLatestTimelineEntry();GetLatestSequenceId
Anda dapat memanggil operasi ini untuk mendapatkan nilai SequenceId dari pesan terbaru. Jika tidak ada pesan yang tersedia, sistem tidak akan menghasilkan kesalahan dan akan mengembalikan 0.
timelineQueue.getLatestSequenceId();Update
Anda dapat memanggil operasi ini untuk memperbarui pesan secara sinkron berdasarkan nilai SequenceId.
TimelineMessage message = new TimelineMessage().setField("text", "Timeline is fine.");
//memperbarui pesan dengan bidang baru
message.setField("text", "new value");
timelineQueue.update(sequenceId, message);UpdateAsync
Anda dapat memanggil operasi ini untuk memperbarui pesan secara asinkron berdasarkan nilai SequenceId. Anda dapat menyesuaikan callback untuk memproses pembaruan yang berhasil atau gagal. Operasi ini mengembalikan 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) {
// lakukan sesuatu ketika berhasil.
}
@Override
public void onFailed(TimelineIdentifier i, TimelineMessage m, Exception e) {
// lakukan sesuatu ketika gagal.
}
};
TimelineMessage newMessage = oldMessage;
newMessage.setField("text", "new value");
timelineQueue.updateAsync(sequenceId, newMessage, callback);Delete
Anda dapat memanggil operasi ini untuk menghapus satu baris berdasarkan nilai SequenceId.
timelineQueue.delete(sequenceId);Scan
Anda dapat memanggil operasi ini untuk membaca pesan dalam satu antrian secara berurutan maju atau mundur berdasarkan parameter Scan. Operasi ini mengembalikan Iterator<TimelineEntry>. Anda dapat mengulangi semua set hasil menggunakan iterator.
ScanParameter scanParameter = new ScanParameter().scanBackward(Long.MAX_VALUE, 0);
timelineQueue.scan(scanParameter);