2012-08-29 53 views
3

我使用txamqp Python库连接到AMQP代理(RabbitMQ的),我有以下的回调消费者:如何删除或AMQP队列推迟的消息

@defer.inlineCallbacks 
def message_callback(self, message, queue, chan): 
    """This callback is a queue listener 
    it is called whenever a message was consumed from queue 
    c.f. test_amqp.ConsumeTestCase for use cases 
    """ 

    # The callback should be redefined here to keep getting further messages from queue 
    queue.get().addCallback(self.message_callback, queue, chan).addErrback(self.message_errback)   

    print " [x] Received a valid message: [%r]" % (message.content.body,) 

    yield self.smpp.sendDataRequest(SubmitSmPDU) 

    # ACK the message in queue, this will remove it from the queue 
    chan.basic_ack(message.delivery_tag) 

当“ACK”荷兰国际集团的消息,它将从队列中删除(确认?),但是当消息不是“ACK”版,会发生什么?我需要得到一个“重试”的机制,我可以推迟到再后来就回呼的消息,并随时跟踪多少重试它采取。

而且我怎样才能列出/从队列中删除邮件?

回答

0

已经解决了,为了从队列中重试消息,必须用'重试'标志拒绝消息,它将被排队回队列。

如果我用定时器(callLater扭曲)拒绝它,消息排队将被推迟,无论我想要什么时间。