Estoy usando RabbitMQ con Django a través de Apio. Estoy utilizando la configuración más básica:¿Por qué RabbitMQ no persiste mensajes en una cola duradera?
# RabbitMQ connection settings
BROKER_HOST = 'localhost'
BROKER_PORT = '5672'
BROKER_USER = 'guest'
BROKER_PASSWORD = 'guest'
BROKER_VHOST = '/'
Importé una tarea apio y la cola que se ejecute un año más tarde. Desde el shell IPython:
In [1]: from apps.test_app.tasks import add
In [2]: dt=datetime.datetime(2012, 2, 18, 10, 00)
In [3]: add.apply_async((10, 6), eta=dt)
DEBUG:amqplib:Start from server, version: 8.0, properties: {u'information': 'Licensed under the MPL. See http://www.rabbitmq.com/', u'product': 'RabbitMQ', u'version': '2.2.0', u'copyright': 'Copyright (C) 2007-2010 LShift Ltd., Cohesive Financial Technologies LLC., and Rabbit Technologies Ltd.', u'platform': 'Erlang/OTP'}, mechanisms: ['PLAIN', 'AMQPLAIN'], locales: ['en_US']
DEBUG:amqplib:Open OK! known_hosts []
DEBUG:amqplib:using channel_id: 1
DEBUG:amqplib:Channel open
DEBUG:amqplib:Closed channel #1
Out[3]: <AsyncResult: cfc507a1-175f-438e-acea-8c989a120ab3>
RabbitMQ recibido este mensaje en la cola de apio:
$ rabbitmqctl list_queues name messages durable
Listing queues ...
KTMacBook.local.celeryd.pidbox 0 false
celery 1 true
celeryctl_KTMacBook.local 0 true
...done.
entonces mataron RabbitMQ golpeando control-C seguido por 'a' para abortar. Cuando inicio el servidor de nuevo y comprobar que funciona con rabbitmqctl, se dice que no hay mensajes en la cola de apio:
$ rabbitmqctl list_queues name messages durable
Listing queues ...
celery 0 true
celeryctl_KTMacBook.local 0 true
...done.
La cola de apio fue duradero. ¿Por qué los mensajes no persistieron? ¿Qué debo hacer para que los mensajes sean persistentes?
Confirmé que el modo de entrega se estableció en 2. Pude hacer que funcionara al actualizar RabbitMQ a 2.3.1. Obtuve los problemas de persistencia al usar RabbitMQ 2.2.0. – hekevintran