RequestContext¶
This docs was updated at: 2026-02-23
com.paragon.messaging.whatsapp.messages.RequestContext · Record
Contexto de requisição usando ScopedValues (Java 25).
Por que ScopedValues em vez de ThreadLocal?
- ThreadLocal com milhões de virtual threads = explosão de memória
- ScopedValues são imutáveis e automaticamente limpos
- Integração nativa com Structured Concurrency
- Herdados automaticamente por subtasks
Uso:
// Definir contexto para a requisição
var context = new RequestContext("user-123", "api-key-456");
ScopedValue.where(RequestContext.CURRENT, context)
.run(() -> {
// Tudo dentro deste scope tem acesso ao contexto
processRequest();
// Até tarefas paralelas herdam o contexto!
try (var scope = StructuredTaskScope.open(...)) {
scope.fork(() -> {
var ctx = RequestContext.get();
sendMessage(ctx.userId());
});
}
});
Since: 2.0
Fields¶
RequestContext¶
Construtor compacto com valores padrão.
Methods¶
newInstance¶
ScopedValue para o contexto da requisição atual.
ScopedValues são thread-safe, imutáveis e automaticamente limpos. Diferente de ThreadLocal, não causam memory leaks com virtual threads.
RequestContext¶
Construtor conveniente apenas com userId e apiKey.
get¶
Obtém o contexto da requisição atual.
Returns
contexto atual
Throws
| Type | Condition |
|---|---|
IllegalStateException |
se não houver contexto definido |
getOptional¶
Obtém o contexto da requisição atual, ou Optional.empty() se não houver.
Returns
contexto opcional
isPresent¶
Verifica se há um contexto ativo.
Returns
true se há contexto
runInContext¶
Executa uma operação dentro de um contexto.
Parameters
| Name | Description |
|---|---|
context |
contexto a ser usado |
operation |
operação a executar |