निःशुल्क शुरू करें

zplCloud Blog

Kafka के साथ लेबल प्रिंटिंग: स्ट्रीम को ट्रिगर बनाना

एक सब्सक्रिप्शन = topic + डिज़ाइन + प्रिंटर। प्रिंट विफल होने पर कंज़्यूमर क्या करता है, यही हिस्सा पढ़ने लायक है।

5 मिनट पढ़ने का समय zplCloud Team

स्ट्रीम पहले से मौजूद है

zplCloud द्वारा पढ़े गए Kafka topic संदेश, Zebra प्रिंटर पर लेबल के रूप में प्रिंट होते हुए

आपका ERP या MES पहले से ऑर्डर इवेंट, पिकिंग संदेश और सीरियल नंबर Kafka पर प्रकाशित करता है। आमतौर पर वह स्ट्रीम एक स्क्रीन पर समाप्त होती है और एक इंसान प्रिंट दबाता है।

Data Streaming टैब स्ट्रीम को ट्रिगर बनाता है: एक topic सब्सक्राइब करें, और हर संदेश को लेबल डिज़ाइन के साथ रेंडर करके प्रिंटर को भेजा जाता है। कोई मिडलवेयर नहीं, कोई पोलिंग जॉब नहीं, कोई प्रिंट सर्वर नहीं।

दो डिप्लॉयमेंट:

  • क्लाउड - प्लेटफ़ॉर्म स्वयं topic खपाता है (Confluent Cloud, MSK, इंटरनेट पर पहुँच योग्य कोई भी ब्रोकर)।
  • ऑन-प्रिम - आपके नेटवर्क के अंदर एक ब्रोकर, जिसे zplCloud CLI एजेंट खपाता है। ब्रोकर क्रेडेंशियल्स आपके नेटवर्क से कभी बाहर नहीं जाते।

सब्सक्रिप्शन क्या बाँधता है

चार चीज़ें: एक topic, एक लेबल डिज़ाइन, एक प्रिंटर, और - क्लाउड मोड में - ब्रोकर कनेक्शन कॉन्फ़िग। हर संदेश के लिए प्लेटफ़ॉर्म:

1. मान को JSON के रूप में पार्स करता है और ऑब्जेक्ट कुंजियों को फ़ील्ड बाइंडिंग के रूप में उपयोग करता है,

2. उसी इंजन से डिज़ाइन रेंडर करता है जिसका उपयोग डिज़ाइनर करता है,

3. परिणामी ZPL प्रिंटर को भेजता है (Weblink, या TCP 9100 / USB के माध्यम से CLI एजेंट पर रिमोट प्रिंटर)।

यदि मान JSON नहीं है, तो पूरा टेक्स्ट $message से बाइंड होता है - एकल-फ़ील्ड लेबल के लिए पर्याप्त।

कनेक्शन कॉन्फ़िग

कॉन्फ़िग एक कुंजी=मान; स्ट्रिंग है, जो आराम के समय AES-एन्क्रिप्टेड संग्रहीत होती है:

BootstrapServers=pkc-xxxxx.eu-central-1.aws.confluent.cloud:9092;
GroupId=zplCloudPrinter;
SecurityProtocol=SaslSsl;SaslMechanism=Plain;
SaslUsername=<api-key>;SaslPassword=<api-secret>

जब आप सेट नहीं करते तो लागू डिफ़ॉल्ट:

सेटिंगडिफ़ॉल्टयह क्यों मायने रखती है
AutoOffsetResetLatestनया सब्सक्रिप्शन हेड से शुरू होता है - पहले प्रारंभ में पूरा topic इतिहास प्रिंट नहीं करता
EnableAutoCommitfalseऑफ़सेट प्लेटफ़ॉर्म द्वारा, सफल प्रिंट के बाद कमिट होते हैं - टाइमर पर नहीं
AutoCommitIntervalMs0जबकि ऑटो-कमिट बंद है अप्रासंगिक

AutoOffsetReset=Earliest किसी topic को दोबारा चलाने के लिए जानबूझकर चुना गया विकल्प है। इसे केवल तभी सेट करें जब आप वाकई चाहते हों: इतिहास वाले topic पर, पहला प्रारंभ सब कुछ प्रिंट करता है।

SCRAM (SaslMechanism=ScramSha256 / ScramSha512) और कस्टम CA (SslCaLocation=…) समर्थित हैं। अज्ञात कुंजियाँ उपभोक्ता कॉन्फ़िग में जस-की-तस पारित होती हैं।

ऑन-प्रिम ब्रोकर के लिए, इसे इसके बजाय एजेंट पर पंजीकृत करें:

zplcloud proxy --agent "Lager" \
  --kafka LOKAL="BootstrapServers=10.0.0.10:9092;GroupId=zplCloudConsumer"

एजेंट Kafka brokers: LOKAL रिपोर्ट करता है। जब किसी सब्सक्रिप्शन को इसकी आवश्यकता होती है, तो प्लेटफ़ॉर्म एजेंट से उपभोक्ता चलाने को कहता है - ब्रोकर इंटरनेट से अप्राप्य रहता है।

डिलीवरी सेमेंटिक्स, सटीकता से

यह वह हिस्सा है जहाँ अधिकांश स्ट्रीमिंग इंटीग्रेशन अस्पष्ट हो जाते हैं, इसलिए यहाँ बिल्कुल वैसा ही है जैसा लागू किया गया है:

  • उपभोक्ता 30-सेकंड टाइमआउट के साथ पोल करता है।
  • संदेश पर: रेंडर करें, प्रिंट करें, फिर केवल सफल प्रिंट पर Commit(msg)
  • यदि प्रिंट विफल होता है, तो ऑफ़सेट कमिट नहीं होता और उपभोक्ता रुक जाता है। सब्सक्रिप्शन डिस्कनेक्टेड हो जाता है और Print failed: <error> दिखाता है। यह संदेश को नहीं छोड़ता और रीट्राई लूप में नहीं घूमता।
  • क्योंकि डिफ़ॉल्ट AutoOffsetReset=Latest है, विफलता के बाद पुनः आरंभ करने से विफल संदेश स्वचालित रूप से पुनः वितरित नहीं होता। यदि आप चाहते हैं कि विफल संदेश पुनः आरंभ पर रीट्राई हो, तो कॉन्फ़िग में AutoOffsetReset=Earliest डालें - फिर अकमिटेड ऑफ़सेट फिर से उठाया जाता है।

तर्क: एक लेबल जो प्रिंट नहीं हुआ वह एक परिचालन तथ्य है जिसे किसी को देखना चाहिए। चुपचाप आगे बढ़ना एक भौतिक लेबल खो देगा; हमेशा के लिए रीट्राई पार्टीशन को रोक देगा। रुकना इसे दृश्यमान बनाता है और ऑफ़सेट को वहीं छोड़ देता है।

ConsumeException - ब्रोकर अप्राप्य, प्रमाणीकरण अस्वीकृत, topic गायब - को अलग तरह से व्यवहार किया जाता है। वह प्रिंट विफलता नहीं है, इसलिए उपभोक्ता 5 सेकंड से शुरू होकर 60 सेकंड पर सीमित घातीय बैकऑफ़ के साथ पुनः प्रयास करता है, और अंतिम ब्रोकर त्रुटि सब्सक्रिप्शन पर दिखाई जाती है।

निष्क्रिय कीपालिव

यदि 60 सेकंड तक कोई संदेश नहीं आता, तो प्लेटफ़ॉर्म लक्ष्य प्रिंटर को वेक कमांड भेजता है। Link-OS प्रिंटर कम-पावर स्थिति में चले जाते हैं; कीपालिव के बिना, शांत अवधि के बाद पहला संदेश प्रिंट होने से पहले वेक-अप विलंब का भुगतान करता है। कीपालिव प्रिंटर को छूता है, topic को नहीं - कोई ऑफ़सेट खपत या कमिट नहीं होता।

सब्सक्रिप्शन बनाना

फ़ील्डमान
नामProduction labels
प्रकारक्लाउड (इंटरनेट) या ऑन-प्रिम (via zplCloudCli)
कनेक्शन कॉन्फ़िगकेवल क्लाउड: BootstrapServers=…;…
एजेंट + ब्रोकरकेवल ऑन-प्रिम: एजेंट और ब्रोकर चिप चुनें
Topicproduction.orders
लेबल डिज़ाइनवह डिज़ाइन जिसकी बाइंडिंग संदेश कुंजियों से मेल खाती हैं
प्रिंटरWeblink प्रिंटर या CLI एजेंट पर रिमोट प्रिंटर

प्रारंभ दबाएँ। सब्सक्रिप्शन तब लाइव स्थिति दिखाता है - कनेक्टेड, अंतिम संदेश समय, अंतिम ऑफ़सेट, संदेश गिनती - और हाल के संदेश मानों और उनके प्रिंट परिणाम वाला लॉग।

संदेश आकार

{ "ean": "40063813", "qty": 2, "dest": "Ramp 4" }

कुंजियाँ नाम से बाइंडिंग से मेल खाती हैं। जिन कुंजियों का कोई बाइंडिंग उपयोग नहीं करता वे अनदेखी होती हैं; बिना मेल खाती कुंजी वाली बाइंडिंग खाली रेंडर होती हैं। लाइव होने से पहले वास्तविक संदेश के विरुद्ध लेबल डिज़ाइन करें - डिज़ाइनर में परीक्षण डेटा चिपकाया JSON स्वीकार करता है।

पुनः आरंभ व्यवहार

प्लेटफ़ॉर्म पुनः आरंभ होने पर सक्रिय सब्सक्रिप्शन पुनः आरंभ होते हैं, और CLI एजेंट पुनः कनेक्ट होने पर ऑन-प्रिम सब्सक्रिप्शन पुनः आरंभ होते हैं। रात्रि रखरखाव विंडो या गिरा कनेक्शन किसी से फिर से प्रारंभ दबाने की माँग नहीं करता - उपरोक्त अपवाद के साथ: प्रिंट विफलता से रुका सब्सक्रिप्शन तब तक रुका रहता है जब तक आप प्रिंटर ठीक न करें और उसे प्रारंभ न करें।

प्लान

डेटा स्ट्रीमिंग मीटर की जाती है। Starter इसे परीक्षण के लिए शामिल करता है, प्रति माह 100 स्ट्रीम किए गए लेबल की सीमा के साथ। Pro में 2 स्ट्रीमिंग एंडपॉइंट (Kafka / Azure Service Bus) शामिल हैं; प्रत्येक अतिरिक्त एंडपॉइंट €10 प्रति माह है। मूल्य पृष्ठ देखें।

संबंधित

और लेख