Il semble que plus je fais fonctionner mon serveur rabbitmq longtemps, plus j'ai de problèmes avec les messages non reconnus. J'aimerais les remettre en file d'attente. En fait, il semble y avoir une commande amqp pour le faire, mais elle ne s'applique qu'au canal utilisé par votre connexion. J'ai construit un petit script pika pour au moins l'essayer, mais il me manque quelque chose ou cela ne peut pas être fait de cette façon (et avec 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()