Как мне восстановить неподтвержденные сообщения AMQP из каналов, отличных от канала моего соединения?

Кажется, чем дольше я держу свой сервер rabbitmq работающим, тем больше у меня проблем с неподтвержденными сообщениями. Я бы с удовольствием запросил их. На самом деле, похоже, для этого есть команда amqp, но она применяется только к каналу, который использует ваше соединение. Я создал небольшой сценарий pika, чтобы хотя бы опробовать его, но мне либо чего-то не хватает, либо это невозможно сделать таким способом (как насчет rabbitmqctl?)

import pika

credentials = pika.PlainCredentials('***', '***')
parameters = pika.ConnectionParameters(host='localhost',port=5672,\
    credentials=credentials, virtual_host='***')

def handle_delivery(body):
    """Called when we receive a message from RabbitMQ"""
    print body

def on_connected(connection):
    """Called when we are fully connected to RabbitMQ"""
    connection.channel(on_channel_open)    

def on_channel_open(new_channel):
    """Called when our channel has opened"""
    global channel
    channel = new_channel
    channel.basic_recover(callback=handle_delivery,requeue=True)    

try:
    connection = pika.SelectConnection(parameters=parameters,\
        on_open_callback=on_connected)    

    # Loop so we can communicate with RabbitMQ
    connection.ioloop.start()
except KeyboardInterrupt:
    # Gracefully close the connection
    connection.close()
    # Loop until we're fully closed, will stop on its own
    connection.ioloop.start()
46
задан Will Olbrys 15 August 2011 в 09:01
поделиться