Пример #1
0
  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()
Пример #2
0
  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)
Пример #3
0
 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)))