繁体   English   中英

如何删除或推迟AMQP队列中的邮件

[英]How to delete or postpone a message in the AMQP queue

我正在使用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)

当“确认”消息时,它将从队列中删除(以确认?),但是当消息不是“ack”时会发生什么? 我需要获得一个“重试”机制,我可以推迟稍后再次回调的消息,并跟踪它需要多少次重试。

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

RabbitMQ有一个很好的管理插件 ,但是甚至不允许删除队列中的消息。

您基本上必须编写自己的应用程序,或者确定哪些第三方管理应用程序可以删除消息。

它已经解决,为了从队列中重试消息,有必要拒绝带有'retry'标志的消息,它将被排队回队列。

如果我用计时器拒绝它(callLater in twisted),消息排队将被推迟到我想要的任何时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM