मैं सेलेरी के माध्यम से Django के साथ RabbitMQ का उपयोग कर रहा हूँ। मैं सबसे बुनियादी सेटअप का उपयोग कर रहा हूं:खरगोश एमक्यू टिकाऊ कतार पर संदेश क्यों नहीं रख रहा है?
# RabbitMQ connection settings
BROKER_HOST = 'localhost'
BROKER_PORT = '5672'
BROKER_USER = 'guest'
BROKER_PASSWORD = 'guest'
BROKER_VHOST = '/'
मैंने एक सेलेरी कार्य आयात किया और इसे एक साल बाद चलाने के लिए कतारबद्ध किया। 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 अजवाइन कतार में यह संदेश प्राप्त:
$ rabbitmqctl list_queues name messages durable
Listing queues ...
KTMacBook.local.celeryd.pidbox 0 false
celery 1 true
celeryctl_KTMacBook.local 0 true
...done.
मैं तो नियंत्रण सी 'एक' निरस्त करने के बाद मारकर RabbitMQ को मार डाला। जब मैं सर्वर फिर से शुरू करने और rabbitmqctl के साथ की जाँच करें, यह कहता है अजवाइन कतार में कोई संदेश नहीं देखते हैं कि:
$ rabbitmqctl list_queues name messages durable
Listing queues ...
celery 0 true
celeryctl_KTMacBook.local 0 true
...done.
अजवाइन कतार टिकाऊ था। संदेश क्यों नहीं बने रहे? संदेशों को लगातार बनाने के लिए मुझे क्या करने की ज़रूरत है?
मैंने पुष्टि की कि डिलीवरी मोड 2 पर सेट किया गया था। मैं इसे RabbitMQ को 2.3.1 में अपग्रेड करके काम करने में सक्षम था। RabbitMQ 2.2.0 का उपयोग करते समय मुझे दृढ़ता की समस्याएं मिल रही थीं। – hekevintran