Created
May 22, 2010 15:03
-
-
Save yuxel/410129 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Kullanici kayit islemlerinden gelen mesajlari dinleyen, | |
mesaj geldiginde ilgili kullanicinin bulundugu yeri veritabanindan cekme, | |
kullanicinin bulundugu bu yere yakin diger kullanicilari cekme, | |
ve bulunan diger kullanicilara e-posta gonderme islemlerini | |
simule eden kod | |
http://barryp.org/software/py-amqplib/ adresinden py-amqplib'i indirip kurmalisiniz | |
""" | |
from amqplib import client_0_8 as amqp | |
import time # islemlerin surdugu zamanlari simule etmek icin | |
class rabbitMQMailQueue: | |
# yapilandirma degiskenleri | |
def __init__(self): | |
# rabbitMQ ayarlari | |
self.rabbitMQConf = {"hostPort" : "localhost:5672", | |
"user" : "guest", | |
"pass" : "guest", | |
"virtualHost" : "/" | |
} | |
# kuyrugun ayarlari | |
self.queueConf = {"name" : "eposta", | |
"exchange" : "kayit" | |
} | |
# kuyrugu dinle ve gelen her mesajda doJobs methodunu calistir | |
def listen(self): | |
try: | |
# amqp'ye baglan | |
conn = amqp.Connection(self.rabbitMQConf['hostPort'], | |
self.rabbitMQConf['user'], | |
self.rabbitMQConf['pass'], | |
virtualHost = self.rabbitMQConf['virtualHost'], | |
insist = False) | |
chan = conn.channel() | |
chan.queue_declare( self.queueConf['name'], | |
durable=True, # kuyruk yeniden basladiginda yeniden yaratilsin | |
exclusive=False, | |
auto_delete=False) # son islemden sonra kuyrugu silme | |
chan.exchange_declare(self.queueConf['exchange'], | |
type="direct", # direkt olarak ilgili kuyruga gonder | |
durable=True, | |
auto_delete=False,) | |
# queue ile exchange'i bagla | |
chan.queue_bind(self.queueConf['name'], self.queueConf['exchange']) | |
# islemden sonra cagirilacak methodu ayarla | |
chan.basic_consume(self.queueConf['name'], | |
no_ack=True, | |
callback=self.doJobs) # ilgili methodu calistir | |
# kuyrugu dinlemeye basla | |
while True: | |
chan.wait() | |
chan.close() | |
conn.close() | |
except Exception, error : | |
print "Bir hata olustu : ",error | |
# kuyruktan her mesaj geldiginde ilgili kullaniciya ait asagidaki islemleri yap | |
def doJobs(self,msg): | |
print "Kuyruktan bir mesaj alindi" | |
userId = msg.body | |
print userId, " id'li kullanicinin bolgesi bulunuyor" | |
time.sleep(1) # islemin 1 saniye surdugunu varsayalim | |
print userId, " id'li kullanicinin bulundugu yere yakin kullanicilar bulunuyor" | |
time.sleep(6) # islemin 6 saniye surdugunu varsayalim | |
print "Bulunan kullanicilara e-posta gonderiliyor" | |
time.sleep(3) # e-posta gonderme isleminin 3 saniye surdugunu varsayalim | |
# toplamda islemler 10 saniye suruyor | |
# bu islem bittikten sonra kuyruktan yeni mesaj aliniyor | |
# uygulamayi baslat | |
if __name__ == '__main__': | |
mailQueue = rabbitMQMailQueue() | |
mailQueue.listen() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment