Skip to content

HookContext

This docs was updated at: 2026-02-23

com.paragon.messaging.hooks.HookContext  ·  Record


Contexto passado para hooks durante processamento de lote de mensagens.

Contém informações sobre o lote sendo processado e um mapa mutável para hooks compartilharem dados entre si.

Exemplo de uso entre hooks:

// Pre-hook armazena timestamp
ProcessingHook preHook = context -> {
    context.putMetadata("startTime", Instant.now());
    context.putMetadata("userTier", getUserTier(context.userId()));
};
// Post-hook calcula duração
ProcessingHook postHook = context -> {
    Instant start = context.getMetadata("startTime", Instant.class).orElseThrow();
    Duration elapsed = Duration.between(start, Instant.now());
    metrics.record(context.userId(), elapsed);
};

Since: 1.0

Methods

create

public static HookContext create(String userId, List<InboundMessage> messages)

Cria contexto para primeira tentativa.

Parameters

Name Description
userId ID do usuário
messages mensagens a processar

Returns

novo HookContext


forRetry

public static HookContext forRetry(HookContext original, int retryCount)

Cria contexto para retry.

Parameters

Name Description
original contexto original
retryCount número da tentativa

Returns

novo HookContext para retry


elapsedTime

public Duration elapsedTime()

Tempo decorrido desde início do processamento.

Returns

duração desde batchStartTime


firstMessage

public InboundMessage firstMessage()

Primeira mensagem do lote.

Returns

primeira mensagem

Throws

Type Condition
IllegalStateException se lote vazio

lastMessage

public InboundMessage lastMessage()

Última mensagem do lote.

Returns

última mensagem

Throws

Type Condition
IllegalStateException se lote vazio

putMetadata

public void putMetadata(String key, Object value)

Armazena valor em metadata (thread-safe).

Parameters

Name Description
key chave
value valor

getMetadata

public Optional<Object> getMetadata(String key)

Recupera valor de metadata.

Parameters

Name Description
key chave

Returns

Optional com valor ou empty


getMetadata

public <T> Optional<T> getMetadata(String key, Class<T> type)

Recupera valor tipado de metadata.

Parameters

Name Description
key chave
type tipo esperado
<T> tipo genérico

Returns

Optional com valor tipado ou empty


hasMetadata

public boolean hasMetadata(String key)

Verifica se metadata contém chave.

Parameters

Name Description
key chave

Returns

true se existe


isFirstAttempt

public boolean isFirstAttempt()

Verifica se é primeira tentativa (não é retry).

Returns

true se retryCount == 0