def consume(self, nowait=False):
        q = Queue(self.target.queue_name,
                  exchange=Exchange(self.target.exchange_name, type=self.EXCHANGE_TYPE,
                                    durable=self.options['durable'],
                                    auto_delete=self.options['auto_delete']),
                  routing_key=self.target.routing_key,
                  channel=self.channel,
                  **self.options)
        q.declare(nowait)

        def _callback(raw_message):
            message = self.channel.message_to_python(raw_message)
            self._callback_handler(message, self.callback)

        q.consume(callback=_callback)
Пример #2
0
 def test_consume(self):
     b = Queue('foo', self.exchange, 'foo', channel=get_conn().channel())
     b.consume('fifafo', None)
     assert 'basic_consume' in b.channel
Пример #3
0
 def test_consume(self):
     b = Queue('foo', self.exchange, 'foo', channel=get_conn().channel())
     b.consume('fifafo', None)
     self.assertIn('basic_consume', b.channel)
Пример #4
0
        queue.declare()
        queue.purge()

        logging.info("Binding queue '%s' to exchange '%s' with:" % (queue.name, exchange))
        routing_keys = routing_keys or ['#']
        for rk in routing_keys:
            try:
                logging.debug("rk: %s" % rk)
                queue.bind_to(exchange=exchange, routing_key=rk)
            except Exception, e:
                logging.exception(str(e))
        logging.info('Done: binding')

        consumer_tag = '%s::%s::consuming_exchange' % (self.name, queue.name)
        queue.consume(consumer_tag, callback=self._consumer_producer_callback, no_ack=True)

        self._queues.append(queue)
        return queue

    def _consumer_producer_callback(self, message):

        routing_key = message.delivery_info.get('routing_key')
        self.publish(message, routing_key)
        logging.info("Published a message with rk '%s' to '%s'" % (routing_key, self.name))
        return True
        
class BasePersistConsumer(Queue):
    
    def __init__(self, name, channel=None):