Cesar Schutz
Publico aqui o que ando estudando — lançamento do Java, código, arquitetura, IA, o que me despertar interesse. Quando o estudo rende algo que vale guardar, vira artigo.
Neste livro
- CronJob ou endpoint + fila — onde rodar o batch de uma API Spring Boot no Kubernetes23 set
- Efeito externo sem registro local — a cobrança passou e o banco não gravou11 set
- Chave de idempotência — como impedir a cobrança duplicada no retry10 set
- Arquitetura de ledger — partidas dobradas, saldos e conciliação28 mai
- SNS MessageAttributes e Filter Policy — filtrando mensagens antes do SQS20 mai
- Overhead vs overkill — o custo de toda escolha e o exagero dela16 mai
Neste livro
- Filtros de serialização no Jackson — mascarando número de cartão nos logsTem código-fonte no GitHub25 set
- Virtual threads no Java 21 — pinning e CLOSE_WAIT12 set
- AOP no Spring — JDK Dynamic Proxy, CGLIB e aspects customizados19 mai
- AopUtils.getTargetClass() — desembrulhando os proxies do Spring19 mai
- AtomicBoolean — o sinalizador thread-safe da parada graciosa19 mai
- Gradle — quando usar implementation, api, compileOnly e as demais configurações19 mai
Ordem de leitura
- Parte 1Guia de atualizações do Java14 jul
- Parte 2Java 8 (LTS) — lambdas, Stream API, java.time e o fim do PermGen2 jul
- Parte 3Java 11 (LTS) — módulos, var, HTTP Client e o novo ciclo de releases2 jul
- Parte 4Java 17 (LTS) — records, sealed classes, text blocks e switch expressions2 jul
- Parte 5Java 21 (LTS) — virtual threads, pattern matching e Sequenced Collections2 jul
- Parte 6Java 25 (LTS) — arquivos-fonte compactos, Scoped Values, cache AOT e criptografia pós-quântica2 jul
- Parte 7Java 29 (próxima LTS) — o que o Java 26 e o 27 já trouxeram16 set
Artigos recentes
28 artigos publicados
Mais recente
Criptografia em repouso e em trânsito — o que é e como ativar no Postgres e no MongoDB
De onde vem o termo, o que cada tipo protege (e o que não protege) e como ativar no RDS, no Postgres autogerenciado, no MongoDB Atlas e no MongoDB fora do Atlas.
Filtros de serialização no Jackson — mascarando número de cartão nos logs
Como usar
@JsonFilter,PropertyFiltere um mixin emObjectpara mascarar o número do cartão e remover o CVV só no mapper de log, com a API ainda devolvendo tudo.CronJob ou endpoint + fila — onde rodar o batch de uma API Spring Boot no Kubernetes
Uma API Spring Boot no Kubernetes precisa de uma rotina agendada: CronJob com a mesma imagem e o perfil
batch, ou endpoint que enfileira no SQS para a própria API consumir? Onze critérios comparados.Java 29 (próxima LTS) — o que o Java 26 e o 27 já trouxeram
O caminho do Java 25 até a próxima LTS, o Java 29 (prevista para setembro de 2027): as JEPs do Java 26 e do 27, o que ainda está em preview, exemplos de código e o que conferir na migração.
Bloqueio otimista e pessimista — como funcionam e quando usar cada um
Como impedir que gravações simultâneas se atropelem: coluna de versão ou trava da linha. SQL testado no PostgreSQL, Spring Data JPA, NOWAIT e SKIP LOCKED, deadlock, isolamento e o UPDATE condicional.
Virtual threads no Java 21 — pinning e CLOSE_WAIT
Por que um serviço Java 21 com virtual threads congela sem erro no log: pinning por
synchronized(resolvido no Java 24, JEP 491) e CLOSE_WAIT como rastro. Thread dump, JFR, bulkhead e circuit breaker.Efeito externo sem registro local — a cobrança passou e o banco não gravou
A captura no adquirente passa e a gravação no seu banco falha: grave a intenção antes de causar o efeito. Escrita dupla, outbox e relay com SQL testado, conciliação, CDC, event sourcing e 2PC.
Chave de idempotência — como impedir a cobrança duplicada no retry
Por que consultar antes de gravar não impede que um retry cobre o cliente duas vezes, e como resolver com chave de idempotência, restrição única e resposta guardada. Com SQL testado no PostgreSQL.
Arquitetura de ledger — partidas dobradas, saldos e conciliação
O que 12 artigos ensinam sobre ledgers de grau financeiro: registro append-only, double-entry garantido pelo banco, saldos materializados, idempotência e conciliação como entregável de engenharia — com exemplos em Java.
SNS MessageAttributes e Filter Policy — filtrando mensagens antes do SQS
Como fazer o SNS entregar a cada fila SQS só as mensagens que interessam: atributos de mensagem, filter policy na assinatura, filtro por atributo ou pelo corpo, operadores, limites e cuidados.
W3C Trace Context — correlacionando logs entre microsserviços com o traceparent
O padrão W3C que leva o mesmo ID de rastreamento por todos os serviços de uma operação: o
traceparente otracestate, valores inválidos, a granularidade certa e o ID atravessando o outbox.
Mais recente
Criptografia em repouso e em trânsito — o que é e como ativar no Postgres e no MongoDB
De onde vem o termo, o que cada tipo protege (e o que não protege) e como ativar no RDS, no Postgres autogerenciado, no MongoDB Atlas e no MongoDB fora do Atlas.
Filtros de serialização no Jackson — mascarando número de cartão nos logs
Como usar
@JsonFilter,PropertyFiltere um mixin emObjectpara mascarar o número do cartão e remover o CVV só no mapper de log, com a API ainda devolvendo tudo.CronJob ou endpoint + fila — onde rodar o batch de uma API Spring Boot no Kubernetes
Uma API Spring Boot no Kubernetes precisa de uma rotina agendada: CronJob com a mesma imagem e o perfil
batch, ou endpoint que enfileira no SQS para a própria API consumir? Onze critérios comparados.Java 29 (próxima LTS) — o que o Java 26 e o 27 já trouxeram
O caminho do Java 25 até a próxima LTS, o Java 29 (prevista para setembro de 2027): as JEPs do Java 26 e do 27, o que ainda está em preview, exemplos de código e o que conferir na migração.
Bloqueio otimista e pessimista — como funcionam e quando usar cada um
Como impedir que gravações simultâneas se atropelem: coluna de versão ou trava da linha. SQL testado no PostgreSQL, Spring Data JPA, NOWAIT e SKIP LOCKED, deadlock, isolamento e o UPDATE condicional.
Virtual threads no Java 21 — pinning e CLOSE_WAIT
Por que um serviço Java 21 com virtual threads congela sem erro no log: pinning por
synchronized(resolvido no Java 24, JEP 491) e CLOSE_WAIT como rastro. Thread dump, JFR, bulkhead e circuit breaker.Efeito externo sem registro local — a cobrança passou e o banco não gravou
A captura no adquirente passa e a gravação no seu banco falha: grave a intenção antes de causar o efeito. Escrita dupla, outbox e relay com SQL testado, conciliação, CDC, event sourcing e 2PC.
Chave de idempotência — como impedir a cobrança duplicada no retry
Por que consultar antes de gravar não impede que um retry cobre o cliente duas vezes, e como resolver com chave de idempotência, restrição única e resposta guardada. Com SQL testado no PostgreSQL.
Arquitetura de ledger — partidas dobradas, saldos e conciliação
O que 12 artigos ensinam sobre ledgers de grau financeiro: registro append-only, double-entry garantido pelo banco, saldos materializados, idempotência e conciliação como entregável de engenharia — com exemplos em Java.
SNS MessageAttributes e Filter Policy — filtrando mensagens antes do SQS
Como fazer o SNS entregar a cada fila SQS só as mensagens que interessam: atributos de mensagem, filter policy na assinatura, filtro por atributo ou pelo corpo, operadores, limites e cuidados.
W3C Trace Context — correlacionando logs entre microsserviços com o traceparent
O padrão W3C que leva o mesmo ID de rastreamento por todos os serviços de uma operação: o
traceparente otracestate, valores inválidos, a granularidade certa e o ID atravessando o outbox.

