मैं एक रेल आवेदन जहां ग्राहक रिफंड एक कठोर परिश्रम कार्यकर्ता को सौंप दिया जाता है पर काम कर रहा हूँ में एक sweatshop काम requeue। यदि धनवापसी विफल हो जाती है (क्योंकि हम उस समय भुगतान प्रोसेसर तक नहीं पहुंच सकते हैं) मैं नौकरी की आवश्यकता चाहता हूं।RabbitMQ
class RefundWorker < Sweatshop::Worker
def process_refund(job)
if refund
Transaction.find(job[:transaction]).update_attributes(:status => 'completed')
else
sleep 3
RefundWorker.async_process_refund(job) # requeue the job
end
end
क्या ऊपर से ऐसा करने का कोई बेहतर तरीका है? मुझे RabbitMQ में कोई "देरी" सुविधा नहीं मिली है, और यह अब तक का सबसे अच्छा समाधान है। मैं आवश्यकता के दौरान व्यस्त लूप से बचना चाहता हूं।
अजवाइन एक ईटा/उलटी गिनती के साथ कार्यों के लिए ऐसा करता है। यह सिर्फ संदेशों पर निर्भर करता है, और ईटा पूरा होने पर कार्यों को निष्पादित करने वाला शेड्यूलर होता है। चूंकि संदेशों को स्वीकार करने की आवश्यकता है, उन्हें पकड़ना कोई समस्या नहीं है, हालांकि क्यूओएस प्रीफेच गणना का उपयोग करते समय यह थोड़ी क्विंकी है, क्योंकि हमें प्रत्येक बार ईटा के साथ संदेश प्राप्त होने पर प्रीफ़ेच गिनती बढ़ाना पड़ता है, और इसे कम करता है ईटा संदेश संसाधित किया गया है। – asksol