में कच्चे जेसन कतार संदेश का उपभोग करें आम तौर पर लैरवेल उम्मीद करता है कि यह किसी भी संदेश को कतारबद्ध करता है जिसे बाद में उपभोग करता है। यह job
विशेषता के साथ एक पेलोड बनाता है जो बाद में इंगित करता है कि कतार संदेश को कैसे संभालना है। जब आप लार्वेल के साथ नौकरियां कतार करते हैं, और बाद में उन्हें लार्वेल के साथ संसाधित करते हैं, तो यह बहुत अच्छा काम करता है!लार्वेल
हालांकि, मेरे पास कुछ गैर-लैरवेल ऐप्स हैं जो एक कतार में जेसन संदेश पोस्ट कर रहे हैं। मुझे इन संदेशों को लेने और उन्हें संभालने के लिए लार्वेल की जरूरत है।
मैं संदेशों को संभालने के लिए एक कमांड बस नौकरी लिख सकता हूं, लेकिन मैं अपने विशिष्ट हैंडलर पर संदेश भेजने के लिए queue:work
को कैसे बताना है, यह समझने में सक्षम नहीं हूं।
ऐसा लगता है कि लैरवेल को एक कठिन धारणा है कि किसी भी कतार संदेश को संभालने के लिए कहा जाता है, जिसे उचित रूप से स्वरूपित किया जाएगा, क्रमबद्ध किया जाएगा, और जिस तरह से यह अपेक्षा करता है उसे संरचित किया जाएगा।
लैरवेल इन कच्चे जेसन पेलोड को कैसे उठा सकता है, संरचना को अनदेखा कर सकता है (समझने के लिए वहां कुछ भी नहीं है), और बस मेरे हैंडलर को पेलोड बंद कर दें?
उदाहरण के लिए, अगर मैं करने के लिए इसी तरह की एक कतार संदेश है: तो फिर
{
"foo" : "bar"
}
, वहाँ Laravel का निरीक्षण या यहाँ समझने के लिए कुछ भी नहीं है।
लेकिन मैं एक नौकरी हैंडलर को पता है कि यह कैसे संभाल करने के लिए है:
namespace App\Jobs;
class MyQueueHandler {
public function handle($payload) {
Log::info($payload['foo']); // yay!
}
}
अब कैसे बस इस App\Jobs\MyQueueHandler
हैंडलर, जहां मैं पर आराम कर सकते हैं के लिए किसी भी पेलोड बंद हाथ करने के लिए queue:work
और queue:listen
पाने के लिए मेरी स्वामी हैं?
मुझे वापस आना चाहिए और अपडेट होना चाहिए था। मैं इस पैकेज को खोजने के लिए समाप्त हो गया: https://github.com/kristianedlund/laravel-external-queue। किनारों के चारों ओर मोटा बिट, लेकिन यह काम किया। मुझे एसक्यूएस से कच्चे जेसन पेलोड लेने और उन्हें हैंडलर को सौंपने की अनुमति देता है। मैंने इसे आयरनएमक्यू के लिए भी काफी आसानी से बढ़ाया। – jszobody
मैं उस पुस्तकालय को लागू करने के लिए संघर्ष कर रहा हूं (खरगोश का उपयोग करके), क्या आप अपनी यात्रा में किसी भी कोड के नमूने में आए थे? धन्यवाद – mils