Skip to content
This repository has been archived by the owner on Jan 26, 2021. It is now read-only.

POC usando Mongo Reactive e Spring Webflux com infinite stream

Notifications You must be signed in to change notification settings

rgiaviti/poc-stream-webflux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

POC Reativa usando WebfLux e Mongo

Essa é uma POC usando o Spring Webflux para fazer streaming de dados de uma capped collection do Mongo.

Requisitos

Para fazer a aplicação funcionar irá precisar:

  • Mongo instalado;
  • JDK 11;
  • Maven;

Objetivo

O objetivo dessa aplicação é receber uma atualização sempre que um novo livro for inserido em uma collection do Mongo usando o Flux. Isso é possível usando o @Tailable do Spring Data onde ao se fazer uma consulta, o Mongo não fecha o cursor ao final. Fechar o cursor é o comportamente padrão do Mongo quando ele termina de executar uma consulta em uma collection.

O Mongo somente permite manter o cursor aberto em capped collection porque ficá inpraticável manter cursores abertos em coleções "infinitas".

Na prática, iremos fazer um GET em um endpoint que obtém todos os livros da coleção do Mongo. Porém, esse GET continuará a receber os livros a medida que eles forem sendo inseridos na coleção.

Há um JOB rodando na aplicação que ficará inserindo livros aleatórios na coleção a cada 4 segundos.

Baixando e Compilando

git clone git@github.com:rgiaviti/poc-stream-webflux.git
cd poc-stream-webflux/server

Mude no application.properties a URI de conexão com o Mongo para a aplicação se conectar a sua instalação do Mongo.

Acesse o Mongo e crie uma capped collection com o nome de books. É muito importante que essa coleção seja capped, pois o @Tailable somente funciona em capped collections. Mais informações sobre as capped collections, você encontra aqui: https://docs.mongodb.com/manual/core/capped-collections

Do jeito que está, se você não alterar nada no application.properties, a aplicação se conectará a esse Mongo:

mongodb://root:root@localhost:27017/library?authSource=admin&authMechanism=SCRAM-SHA-256

Rodando a aplicação

mvn spring-boot:run

Testando

Basta fazer um cURL:

curl http://localhost:8080/books/subscribe

Você também pode testar através do client Python aqui do repositório.

cd client
python3 FluxStreamClient.py

About

POC usando Mongo Reactive e Spring Webflux com infinite stream

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published