Post

AWS + Spring na prática: SNS, SQS e Localstack

Hoje vamos ver algo muito comum na vida de um desenvolvedor Java/Kotlin que utiliza AWS: comunicação via mensageria utilizando SNS e SQS, e ainda, como testar tudo isso localmente no localstack.

O problema

Imagine um ecossistema (sim, mais de um serviço) corporativo responsável por gerenciar o ciclo de vida de um pedido. Este pedido que aqui vamos chamar carinhosamente de Order é criado por alguém via API REST (um e-commerce? Um sistema de pedidos mobile? Não importa) e depois precisa ser distribuído entre outros serviços com atribuições específicas, por exemplo: separar os itens do pedido, alocar a coleta, faturar… Entre outros.

Para facilitar esse entendimento, deixou um diagrama simples do fluxo:

pub-sub-order

Solução

Dado o contexto, nossa ideia aqui é criar o serviço que irá publicar o “aviso” (SNS) que temos uma nova Order e um dos serviços que irá consumir essa mensagem por uma fila (SQS) especificamente criada para este fim.

Para isso, fiz um vídeo explicando cada etapa do processo neste projeto que disponibilizei como exemplo em meu github.

Stack utilizada

Para dar um diversificada, resolvi usar duas linguagens diferentes, porém parecidas para trabalhar o código da solução: Kotlin e Java. No mais, temos o bom e velho Spring Boot para tratar dos outros detalhes:

  • Spring Boot v3
  • Java para o SNS producer
  • Kotlin para o SQS consumer
  • Localstack para testar local
  • MongoDB para persistência no SNS producer

Gostou? Compartilhe esse post com seus amigos que também querem aprender um pouco mais sobre comunicação entre micro-serviços, AWS ou Spring.

Esta postagem está licenciada sob CC BY 4.0 pelo autor.

Comments powered by Disqus.