Usando channels com MoleculerJS
O MoleculerJS é um framework focado em microservices, e recentemente um modulo chamado moleculer-channel, ta mas oque esse modulo faz?
Esse modulo permite que se publique , uma message em um canal, seja ele redis, kafka, rabbitmq, nats.
Qual a ideia por trás disso, podemos conversar com outros microservices de outras aplicações e até mesmo em outra linguagem.
Claro que uma implementação manual também nos permite isso, porem teríamos que implementar algo na unha, para comunicar com nossa aplicação com moleculer e com outro service.
Vamos ao código.
npm init -y
Vamos instalar as dependencias.
npm i -S @moleculer/channels faker ioredis moleculer moleculer-repl
e vamos tambem usar o nodemon
npm i nodemon -D
como vamos usar o redis em nosso exemplo vamos criar um docker-compose
vamos ter que criar algumas pastas e arquivos para nosso, redis funcionar.
mkdir -p redis/redis-data
e vamos criar na pasta redis o arquivo, redis.conf
bind 172.28.1.4
protected-mode yes
port 6379
Agora com nosso, redis configurado vamos rodar ele.
docker-compose up
Particularmente não gosto de usar -d, sem ele, podemos acompanhar oque ta acontecendo no container.
Vamos então criar nosso Service.
Vamos entender esse codigo.
Aqui importamos o ServiceBroker e nosso modulo de channels, vale lembrar que esse modulo é um middleware, sendo assim ele tem que ser inserido da mesma forma.
Agora vamos configurar nosso broker, é interessante lembrar que estamos fazendo sem usar o moleculer-cli, que facilita bem o trabalho.
temos então nosso log, e os dados referente ao redis , lembrando que poderia usar outro adapter.
Agora vamos criar nosso service.
Percebam o quanto é simples criar um service no moleculer, sem ter muito arquivos para importar o modulo, registrar, e muitas pastas.
Nesse trecho criamos nosso service e adicionamos um channel para ele, sempre que algo for postado em payment.processed ira cair nesse método, podemos também separar por grupos para ter um fitlro, mas por hora isso é o suficiente.
feito isso vamos iniciar nosso service.
Esse Serviço ira monitorar esse topico e se algo for postado nele ele ira executar uma rotina.
Vamos então criar um Serviço para testar e ver se realmente funciona.
Temos algo similar, porem muda uma parte.
apos iniciar esse Serviço, já colocamos algo na fila.
Agora é rodar tudo e ver a mágica.
Gostou , que tal dar uma olhada no repo do projeto :).