The Psychology of Money Edisi RevisiSeorang genius yang kehilangan kendali atas emosinya bisa mengalami bencana keuangan. Sebaliknya, orang biasa tanpa pendidikan finansial bisa kaya jika mereka punya sejumlah keahlian terkait perilaku yang tak berhubungan dengan ukuran kecerdasan formal. Buy |
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.
pip install redis
import redis
import threadingclass 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()
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)
sample pubsub redis python
Demo: