Todos os produtos
Search
Central de documentação

Tablestore:Gerenciamento de filas

Última atualização: Jul 03, 2026

Gerencie filas de mensagens no modelo de mensagens Timeline usando a interface TimelineQueue.

Obter uma instância de fila

Uma Queue representa uma única fila de mensagens para um TimelineIdentifier específico em um TimelineStore. Crie uma instância de TimelineQueue usando a interface TimelineStore.

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

// A message queue (Queue) for a specific identifier in a TimelineStore.
TimelineQueue timelineQueue = timelineStore.createTimelineQueue(identifier);

A instância de TimelineQueue fornece as seguintes operações para um identificador específico em um armazenamento de dados:

  • Escrita: síncrona (store), assíncrona (storeAsync) e em lote (batchStore)

  • Atualização: síncrona (update) e assíncrona (updateAsync)

  • Leitura: mensagem única (get) e por intervalo (scan)

  • Exclusão: mensagem única (delete)

Store

Escreva uma mensagem sincronamente. Dois métodos estão disponíveis, correspondentes às duas formas de implementar o SequenceId: usar uma coluna de incremento automático ou defini-lo manualmente. Configure a implementação no TimelineSchema.

timelineQueue.store(message); // SequenceId implemented by an auto-increment column.
timelineQueue.store(sequenceId, message); // Manually set the SequenceId.

StoreAsync

Escreva uma mensagem assincronamente. Defina um TimelineCallback para tratar sucesso e falha. O método retorna Future<TimelineEntry>.

TimelineCallback callback = new TimelineCallback() {
    @Override
    public void onCompleted(TimelineIdentifier i, TimelineMessage m, TimelineEntry t) {
        // Do something on success.
    }

    @Override
    public void onFailed(TimelineIdentifier i, TimelineMessage m, Exception e) {
        // Do something on failure.
    }
};

timelineQueue.storeAsync(message, callback); // SequenceId implemented by an auto-increment column.
timelineQueue.storeAsync(sequenceId, message, callback); // Manually set the SequenceId.

BatchStore

Escreva várias mensagens em um único lote. Há suporte para variantes com e sem callback.

timelineQueue.batchStore(message); // SequenceId implemented by an auto-increment column.
timelineQueue.batchStore(sequenceId, message); // Manually set the SequenceId.

timelineQueue.batchStore(message, callback); // SequenceId implemented by an auto-increment column.
timelineQueue.batchStore(sequenceId, message, callback); // Manually set the SequenceId.

Get

Leia uma única mensagem pelo SequenceId. Se a mensagem não existir, o método não gera erro e retorna null.

timelineQueue.get(sequenceId);

GetLatestTimelineEntry

Leia a mensagem mais recente. Se não houver mensagens, o método não gera erro e retorna null.

timelineQueue.getLatestTimelineEntry();

GetLatestSequenceId

Obtenha o SequenceId da mensagem mais recente. Se não houver mensagens, o método não gera erro e retorna 0.

timelineQueue.getLatestSequenceId();

Update

Atualize uma mensagem sincronamente pelo SequenceId.

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

// Update the message with a new field.
message.setField("text", "new value");
timelineQueue.update(sequenceId, message);

UpdateAsync

Atualize uma mensagem assincronamente pelo SequenceId. Defina um TimelineCallback para tratar sucesso e falha. O método retorna 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) {
        // Do something on success.
    }

    @Override
    public void onFailed(TimelineIdentifier i, TimelineMessage m, Exception e) {
        // Do something on failure.
    }
};

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

Delete

Exclua uma única mensagem pelo SequenceId.

timelineQueue.delete(sequenceId);

Scan

Leia um intervalo de mensagens em ordem direta ou inversa usando um ScanParameter. Retorna Iterator<TimelineEntry> para acesso sequencial.

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

timelineQueue.scan(scanParameter);