Nats-Server , Usando channels

Alexandre E Souza
golovers
Published in
3 min readOct 13, 2021

--

Nesse artigo vou mostrar uma forma simples de consumir uma fila do nats-server, usando channels.

Este artigo sera de grande importância quando formos falar sobre microservice utilizando Go, por ser uma linguagem de grande performance, vale a pena ter em seu arsenal de linguagens e se tratando de microservice nada como uma linguagem simples e poderosa.

Inicialmente vamos ver qual sera a estrutura usada em nosso mini projeto.

Vamos ter 2 projetos, um para receber as mensagens, e outro para enviar onde sera simulado uma aplicação.

Vamos inicialmente criar nosso projeto nats-server, onde sera nosso cliente.

Dentro dele vamos ter o main.go, e o service/service.go.

Vamos instalar nosso cliente do nats.

go get github.com/nats-io/nats.go

Agora vamos criar nosso service/service.go

Percebam que no exemplo usando o Marshal para deixar em json, apenas para visualizar melhor no terminal.

O pulo do gato, é nosso for, que ficara em um loop, infinito e sempre que chegar algo no tópico register, ele ira ler.

O que me deixa maravilhado com Go é que não precisa de framework ou instalar 300 dependências no projeto, e quando estiver tudo pronto é só fazer um build e ser feliz rs.

No código acima, temos a conexão.

Usando o default do nats, caso não use pode colocar a string.

Logo a baixo temos nossa struct que será parseada, quando vir alguma mensagem em nosso tópico.

Depois temos, o tópico que ficaremos ouvindo, e nosso for que irá fazer a mágica.

Nosso main sera bem simples.

Agora com nosso cliente, feito (simples d+, porem muito didático)

Vamos agora ao serviço, que ficara enviando as mensagens.

Para isso vamos criar outro projeto, para ficar bem organizado e funcionar legal.

Vamos criar nosso, service/sendmessage.go

notem que usamos a libe faker, para gerar alguns dados.

go get github.com/bxcodec/faker/v3

Nesse caso temos algumas coisas iguais o serviço anterior, a diferença é que esse, cara vai publicar e não ouvir, para isso temos esse for maroto, onde iremos gerar os dados, e publicar.

Notem que temos um sleep, para não ficar bombardeando nossa fila rs.

Para finalizar temos também um main.go maroto. Idêntico ao anterior.

E para podermos testar temos que ter um nats-server rodando, para isso usei o docker.

--

--