def open(self): self.usezlib=int(self.get_argument('usezlib',0)) sessionid=self.get_argument('sessionid',None) cdata=self.get_argument('cdata',None) self.userdata=None if sessionid: self.userdata=DecodeCryptSession(sessionid) if self.userdata: self.userdata['uid']=str(self.userdata['uid']) if sessionid and self.userdata is None: self.close() return self.connid=uuid.uuid4().get_hex() print self.connid+' connected' connection_list[self.connid]=self self.last_act_time=time.time() self.cip=self.request.remote_ip if self.userdata: msgbody=DefJsonEncoder.encode( { "func":"session.start2", "parm":{ "sessionid":None, }, "cdata":cdata } ) msg=Message(body=msgbody,delivery_mode=2,reply_to=mqserver.back_queue) msg.headers={"connid":self.connid,'cip':self.cip,"uid":self.userdata['uid'], 'stime':time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(self.userdata.get('time'))),'suuid':self.userdata.get('uuid').hex} mqserver.publish(msg)
def on_close(self): print "%s closed" % self.connid connection_list.pop(self.connid, '') msg = Message(body='{"func":"connection_lost","parm":{}}', delivery_mode=2) msg.headers = {"connid": self.connid, 'cip': self.cip} mqserver.publish(msg)
def on_close(self): print "%s closed"%self.connid connection_list.pop(self.connid,'') msg=Message(body='{"func":"connection_lost","parm":{}}',delivery_mode=2) msg.headers={"connid":self.connid,'cip':self.cip} if self.userdata: msg.headers['uid']=self.userdata['uid'] mqserver.publish(msg)
def test_consume(self): global count conn = Connection('localhost', io_loop=self.io_loop) test_msg = Message('test') count = 0 def clean_up(): assert not ch.consumers conn.close(self.stop) def consume_callback(msg): global ch, count, consumer count += 1 assert msg.body == 'test', msg.body if count == 50: consumer.cancel(clean_up) def on_connect(): global ch, consumer ch = conn.channel() ch.exchange_declare('test_exchange', durable=False) ch.queue_delete('test_queue') ch.queue_declare('test_queue', durable=False) ch.queue_bind('test_queue', 'test_exchange', 'test') for _ in xrange(50): ch.publish(test_msg, exchange='test_exchange', routing_key='test') consumer = Consumer(consume_callback) ch.consume('test_queue', consumer, no_ack=True) conn.connect(on_connect) self.wait()
def test_get(self): conn = Connection('localhost', io_loop=self.io_loop) ch = None test_msg = Message('test') def on_msg(msg): global ch assert msg.body == 'test' msg.ack() ch.get('test_queue', on_missing_msg) def on_missing_msg(msg): assert msg is None conn.close(self.stop) def on_connect(): global ch ch = conn.channel() ch.exchange_declare('test_exchange', durable=False) ch.queue_delete('test_queue') ch.queue_declare('test_queue', durable=False) ch.queue_bind('test_queue', 'test_exchange', 'test') ch.publish(test_msg, exchange='test_exchange', routing_key='test') ch.get('test_queue', on_msg) conn.connect(on_connect) self.wait()
def test_publish(self): conn = Connection('localhost', io_loop=self.io_loop) test_msg = Message('test') def on_connect(): ch = conn.channel() ch.exchange_declare('test_exchange', durable=False) ch.publish(test_msg, exchange='test_exchange', routing_key='test') conn.close(self.stop) conn.connect(on_connect) self.wait()
def test_reliable_publishing(self): test_msg = Message('test') conn = Connection('localhost', io_loop=self.io_loop) def on_connect(): ch = conn.channel() ch.exchange_declare('test_imm', durable=False) ch.on_error = lambda: None ch.select() ch.publish(test_msg, exchange='test_imm') ch.commit(lambda: conn.close(self.stop)) conn.connect(on_connect) self.wait()
def on_connect(): self.ch = conn.channel() self.ch.exchange_declare('test_exchange', durable=False) self.ch.queue_delete('test_queue') self.ch.queue_declare('test_queue', durable=True) self.ch.qos(prefetch_count=49) self.ch.queue_bind('test_queue', 'test_exchange', 'test') for i in xrange(50): msg = Message('test %d' % i) self.ch.publish(msg, exchange='test_exchange', routing_key='test') consumer = Consumer(consume_callback) self.ch.consume('test_queue', consumer, no_ack=False)
def test_basic_return(self): test_msg = Message('test') conn = Connection('localhost', io_loop=self.io_loop) def on_connect(): ch = conn.channel() ch.on_return = on_return ch.exchange_declare('test_mand', durable=False) ch.publish(test_msg, exchange='test_mand', mandatory=True) def on_return(msg): rx = msg.rx_data assert rx.reply_code == 312, rx.reply_code # NO_ROUTE assert rx.exchange == 'test_mand', rx.exchange_declare conn.close(self.stop) conn.connect(on_connect) self.wait()
class RabbitMQServer(tornado.websocket.WebSocketHandler): last_act_time = 0 def open(self): self.usezlib = int(self.get_argument('usezlib', 0)) self.connid = uuid.uuid4().get_hex() print self.connid + ' connected' connection_list[self.connid] = self self.last_act_time = time.time() self.cip = self.request.remote_ip def on_message(self, message): try: if self.usezlib: message = zlib.decompress(message) except Exception, e: pass msg = Message(body=message, delivery_mode=2, reply_to=mqserver.back_queue) msg.headers = {"connid": self.connid, 'cip': self.cip} mqserver.publish(msg) self.last_act_time = time.time()
def test_purge_queue(self): test_msg = Message('test') conn = Connection('localhost', io_loop=self.io_loop) def on_connect(): self.ch = conn.channel() self.ch.queue_delete('test_queue') self.ch.queue_declare('test_purge_queue', auto_delete=True) self.ch.exchange_declare('test_purge_exchange', durable=False) self.ch.queue_bind(queue='test_purge_queue', exchange='test_purge_exchange') self.ch.queue_purge('test_purge_queue') for _ in xrange(3): self.ch.publish(test_msg, exchange='test_purge_exchange') self.ch.queue_purge('test_purge_queue', purged) def purged(msg_count): assert msg_count == 3, msg_count conn.close(self.stop) conn.connect(on_connect) self.wait()
def test_publish_huge(self): conn = Connection('localhost', io_loop=self.io_loop) msg = "test message" * 151343 test_msg = Message(msg) def on_connect(): ch = conn.channel() def callback(msg): conn.close(self.stop) def on_creation(q): ch.publish(test_msg, exchange='test_exchange', routing_key='test') ch.consume(q.queue, callback) ch.exchange_declare('test_exchange', durable=False) ch.queue_delete('test_queue') ch.queue_declare('test_queue', durable=False, callback=on_creation) ch.queue_bind('test_queue', 'test_exchange', 'test') conn.connect(on_connect) self.wait(timeout=1)
def on_message(self, message): message=DefJsonEncoder.encode(msgpack.unpackb(message)) msg=Message(body=message,delivery_mode=2,reply_to=mqserver.back_queue) msg.headers={"connid":self.connid,'cip':self.cip} mqserver.publish(msg) self.last_act_time=time.time()