Python 如何删除或延迟AMQP队列中的消息

Python 如何删除或延迟AMQP队列中的消息,python,twisted,rabbitmq,amqp,Python,Twisted,Rabbitmq,Amqp,我正在使用txamqp python库连接到AMQP代理(RabbitMQ),我有一个具有以下回调的使用者: @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.Co

我正在使用txamqp python库连接到AMQP代理(RabbitMQ),我有一个具有以下回调的使用者:

@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)
当“确认”消息时,它将从队列中删除(确认?),但当消息未“确认”时会发生什么情况?我需要一个“重试”机制,在这个机制中,我可以推迟稍后再次回调的消息,并跟踪重试次数

我如何从队列中列出/删除消息?

RabbitMQ有一个很好的方法,但是它甚至不允许从队列中删除消息


基本上,您必须编写自己的应用程序,或者找出其中哪些可以删除消息。

问题已经解决,为了重试队列中的消息,必须拒绝带有“重试”标志的消息,它将重新排队到队列中

如果我用计时器拒绝它(稍后在twisted中调用),消息排队将被推迟到我想要的任何时间