def _listenQ(self): if len(self.queues) == 0: return self.connection = self._connect() self.channel = self.connection.channel() for queue in self.queues: self.channel.queue_declare(queue=queue) self.channel.basic_consume( self._consume, queue=queue, no_ack=True ) self._log(" [%s] Waiting for messages @ '%s'." % (dt.now("%Y-%m-%dT%H:%M:%S"), queue)) self.is_listening = True self._log("'CTRL+C' to stop") self.channel.start_consuming()
def publishQ(self, message): connection = self._connect() channel = connection.channel() if isinstance(message, Message): full_message = message elif isinstance(message, str): full_message = Message(message) if not isinstance(full_message, Message): raise TypeError("full_message is of the wrong type '%s'. Expected '<wrappytmq.message.Message>'" % type(full_message)) for queue in self.queues: channel.queue_declare(queue=queue) channel.basic_publish( exchange='', routing_key=queue, body=json.dumps(full_message.__dict__), properties=pika.BasicProperties(app_id = queue) ) self._log("[%s] Sent [id: %s] (length: %s) -> '%s'" % (dt.now("%Y-%m-%dT%H:%M:%S"), full_message.id, len(full_message.body), queue)) self._disconnect(connection)
def _consume(self, unused_channel, basic_deliver, properties, payload): message = Message.loads(payload) message.delivered = datetime.now() self._log(" [%s @ %s] Received #%s [id: %s] (length: %s)" % (dt.now("%Y-%m-%dT%H:%M:%S"), properties.app_id, basic_deliver.delivery_tag, message.id, len(message.body)))