NODEJS REDIS PUB & SUB MICRO SERVICE COMMUNUCATION

Yasin DALKILIÇ
2 min readMar 20, 2022

--

Redis Pub & Sub

Merhabalar bu yazımızda redis pub & sub yöntemi ile nodejs tarafındaki micro servislerimizi nasıl haberleştirebiliriz ondan bahsediyor olacağız. Öncelikle redis nedir ondan bahsederek işe koyulalım.

Redis (Remote Dictionary Service) Nedir

C ile yazılmış, key-value şeklinde tasarlanmış bir NoSQL veritabanıdır. Veriyi bellekte tuttuğu için çok hızlı okuma ve yazma yapılır.

Redis (Pub & Sub) Nedir

Redis Pub & Sub (Publisher/Subscriber), Redis’in içinde dahili olarak gelen bir gayet basit ama kullanışlı bir mesajlaşma sistemidir. Publisher yani yayımcı, bir mesajı, gönderildiği kanalı takip eden alıcı veya alıcılara gönderir.

Özet

O halde redis pub & sub ile bir mesajı yayınlayıp (publish) bir diğer taraftan mesajı alabilirim(subscriber). Şimdi gelin bunu nodejs uygulamamıza uygulayalım. Örneğimizde iki adet servis olacak , ilk servis kullanıcılarla ilgili işlemleri yapan USER micro servisi , diğeri ise mail atmakla görevli olan MAIL micro servisi. Bir kullanıcıyı ben kayıt ettiğimde , mail servisine kullanıcı için mail atması gerektiğini söylüyor olacağım.

Örneğimizde Redis kurulu ve ayakta olarak kabul ediyor olacağız.

Yapılandırma ;

node_pub_sub klasörü oluşturup içerisine userservice ve mailservice isminde iki klasör olusturup userservice içerisine gelip npm init -y diyerek boş bir proje olusturuyorum. Daha sonra ihtiyacım olan bağımlılıkları aşağıdaki gibi kuruyorum.

npm install --save express
npm install --save node-redis-pubsub

ve ardında app.js dosyamı oluşturup aşağıdaki gibi

const express = require('express')
const NRP = require('node-redis-pubsub')
const app = express()
const router = express.Router()
const config = { port: 6379, scope: 'mail'}
const nrp = new NRP(config)
app.use(express.json())
router.post('/newuser', (req, res) => {
const { userName, email } = req.body
nrp.emit('send_mail', { email })
res.json({success: true,userName,email})
})
app.use(router)
app.listen(5000,()=>{
console.log('Server Running 5000')
})

örneğimizde userservice içerisinde newuser endpointi için bir istek geldiginde nrp ile bir olay olusuturup bu olayın isminin send_mail oldugunu belirttim , bu olay gerçekleşirken isteğin içerisinde gelen email adresini de parametre olarak göndermesini söyledim.

Şimdi sırada mailservice için aynı işlemleri gerçekleştirip app.js dosyamızı olusturup aşağıdaki gibi kodlayalım;

const express = require('express')
const NRP = require('node-redis-pubsub')
const app = express()
const router = express.Router()
const config = { port: 6379, scope: 'mail'}
const nrp = new NRP(config)
nrp.on('send_mail',(data)=>{console.log('email adresi',email)
})
.....
app.listen(4000,()=>{
console.log('Server Running 4000')
})

yukarıda ise userservice içerisindeki tetiklenen send_mail olayı yakalanıp console üzerine mail adresi yazdırılmaktadır.

Youtube Kanalım.

Herkese İyi Çalışmalar Dilerim.

--

--

Yasin DALKILIÇ

Hi, My name is Yasin I am a Software Developer, I love so much researching and development 😊 Here is my youtube channel @webciyasin