#!/usr/bin/env python
# http://www.rabbitmq.com/tutorials/tutorial-two-python.html
import pika
import time
import random

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='localhost'))
channel = connection.channel()

channel.queue_declare(queue='task_queue',
  arguments={
  'x-message-ttl' : 1000,
  "x-dead-letter-exchange" : "dlx",
#  "x-dead-letter-routing-key" : "dl", # if not specified, queue's routing-key is used
}
)
print ' [*] Waiting for messages. To exit press CTRL+C'

def callback(ch, method, properties, body):
    print " [x] Received %r" % (body,)
    if random.random() < 0.5:
        ch.basic_ack(delivery_tag = method.delivery_tag)
        time.sleep(5)
        print " [x] Done"
    else:
        ch.basic_reject(delivery_tag = method.delivery_tag, requeue=False)
        print " [x] Rejected"

channel.basic_qos(prefetch_count=1)
channel.basic_consume(callback,
                      queue='task_queue')

channel.start_consuming()