Usando channels com MoleculerJS

Alexandre E Souza
jslovers
Published in
3 min readOct 22, 2021

--

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 :).

https://github.com/devalexandre/moleculer-channels-example

--

--