NATS.io: Mensageria Simples e Rápida com Spring Boot

Guia prático para integrar NATS como broker de mensagens em projetos Spring Boot: configuração, publicação, consumo e exemplo funcional com Docker.

🟢 Como utilizar NATS no Spring Boot

Este guia mostra como criar um projeto de exemplo para publicar e consumir mensagens usando NATS como broker de mensagens, utilizando Spring Boot.

🛠️ Criação do Projeto

Crie um novo projeto Spring Boot com as dependências básicas:

  • 🌐 Spring Boot Starter Web
  • ✉️ NATS (biblioteca Java)
  • 🧪 Datafaker (para geração de dados de exemplo)

No build.gradle:

1
2
3
4
5
6
7
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'io.nats:jnats:2.19.0'
    implementation 'net.datafaker:datafaker:2.2.2'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

🐳 Configuração do NATS

Adicione um arquivo docker-compose.yml para subir o NATS localmente:

1
2
3
4
5
6
version: '3.8'
services:
  nats:
    image: nats:2.10
    ports:
      - "4222:4222"

Inicie o NATS com:

1
docker compose up -d

⚙️ Configuração de Host e Porta

No seu código Java, configure o host e a porta do NATS (por padrão, localhost:4222):

1
2
String natsUrl = "nats://localhost:4222";
Connection natsConnection = Nats.connect(natsUrl);

📤 Publicando Mensagens

Exemplo de publicação de mensagem:

1
2
3
4
5
6
7
8
import io.nats.client.Connection;
import io.nats.client.Nats;

public void publishMessage(String subject, String message) throws Exception {
    try (Connection nc = Nats.connect("nats://localhost:4222")) {
        nc.publish(subject, message.getBytes(StandardCharsets.UTF_8));
    }
}

📥 Consumindo Mensagens

Exemplo de assinatura de mensagens:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import io.nats.client.Connection;
import io.nats.client.Dispatcher;
import io.nats.client.Nats;

public void subscribe(String subject) throws Exception {
    Connection nc = Nats.connect("nats://localhost:4222");
    Dispatcher d = nc.createDispatcher((msg) -> {
        System.out.println("Recebido: " + new String(msg.getData(), StandardCharsets.UTF_8));
    });
    d.subscribe(subject);
}

🧩 Integração com Spring Boot

Você pode criar um @Service para publicar e consumir mensagens, injetando as dependências conforme necessário.

🚀 Testando

Execute a aplicação Spring Boot:

1
./gradlew bootRun

Dispare requisições para publicar ou consumir mensagens conforme sua API REST.


🎯 Projeto Demo no GitHub

Confira um exemplo completo e funcional de integração Spring Boot + NATS no repositório:

👉 Projeto Demo no GitHub

Para mais detalhes, consulte a documentação oficial do NATS Java.

comments powered by Disqus
Criado com Hugo
Tema Stack desenvolvido por Jimmy