Menggunakan Redis PUB/SUB Untuk Aplikasi Python

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Menggunakan Redis PUB/SUB Untuk Aplikasi Python

Pola Pub/Sub alias Publish-Subscribe adalah pola yang didalamnya terdapat tiga komponen utama yaitu sender, receiver & broker.

Komunikasi diproses oleh broker, membantu sender atau publisher untuk mempublikasikan informasi dan menyampaikan informasi tersebut kepada receiver atau subcriber.

Dalam arsitektur perangkat lunak, publish-subscribe adalah pola pesan di mana pengirim pesan, yang disebut publisher, tidak memprogram pesan untuk dikirim langsung ke receiver tertentu, yang disebut subcriber, tetapi mengkategorikan pesan yang diterbitkan ke dalam kelas tanpa sepengetahuan subcriber manapun.

Demikian pula, subcriber menyatakan minatnya pada satu atau lebih kelas dan hanya menerima pesan yang menarik, tanpa mengetahui publisher manapun.

Kita asumsikan, Haris adalah pemilik Toko Musik tempat dia menjual musik dari berbagai Genre. Lisa adalah Musisi yang menerbitkan/menjual musiknya di Haris Shop. Dan, Rudi adalah Pelanggan Haris yang membeli musik dari Haris Shop.

Haris menyimpan daftar pelanggan dan minat mereka, karena itu dia tahu Rudi menyukai Musik Klasik.

Setiap kali Lisa membuat album Musik Klasik di toko Haris, Haris mengirimkannya kepada Rudi. Bagian yang menarik adalah Rudi tidak perlu tahu siapa yang menciptakan Musik dan Lisa juga tidak perlu tahu siapa yang mendengarkan musiknya.

Seperti yang bisa Anda tebak di sini Haris adalah Broker, Lisa adalah Publisher, dan Rudi berperan sebagai Subcriber.

Install Redis


Pastikan bahwa di laptopmu telah terinstall redis, jika belum kamu bisa membacanya di tutorial sebelumnya : Install redis menggunakan docker kontainer

Setup Python Environment


Setelah redis ter-install di komputer mu, pastikan kamu sudah berada pada mode environtment python, jika belum kamu bisa membacanya di tutorial sebelumnya :

Sample PUB-SUB dengan Python


install redis dengan pip
pip install redis

1) Subcribe sebuah channel, buat file dengan nama subcriber.py

import redis
import threading

class Listener(threading.Thread):
def __init__(self, r, channels):
threading.Thread.__init__(self)
self.redis = r
self.pubsub = self.redis.pubsub()
self.pubsub.subscribe(channels)

def work(self, item):
print(item['channel'], ":", item['data'])

def run(self):
for item in self.pubsub.listen():
self.work(item)

if __name__ == "__main__":
r = redis.StrictRedis(host='127.0.0.1', port=63790, db=0)
client = Listener(r, ['Musik-Klasik'])
client.start()

2) Publish data ke chanel, buat file dengan nama publisher.py

import redis
class TestPub():
def __init__(self, host='127.0.0.1', port=63790, db=0):
self.queue = redis.StrictRedis(host=host, port=port, db=db)

def pub(self, name, value):
self.queue.publish(name, value)

channel = "Musik-Klasik"
message ="Canon in D major"
TestPub().pub(channel, message)

3) Jalankan kode diatas pada 2 terminal yang berbeda


  • python subcriber.py

  • python publisher.py


Jika sukses maka pada terminal subcriber.py akan tampil screen berikut:

sample pubsub redis python sample pubsub redis python

Demo:

Baca artikel lainya: