zplCloud Blog
طباعة الملصقات مع Kafka: التدفق كمشغّل
اشتراك واحد = موضوع + تصميم + طابعة. وما يفعله المستهلك عند فشل الطباعة هو الجزء الذي يستحق القراءة.
التدفق موجود أصلًا
نظام ERP أو MES لديك ينشر أصلًا أحداث الطلبات ورسائل الانتقاء والأرقام التسلسلية إلى Kafka. عادة ينتهي هذا التدفق على شاشة ويضغط إنسان على طباعة.
تبويب Data Streaming يجعل التدفق هو المشغّل: اشترك في موضوع topic، ويُنشأ كل رسالة بتصميم ملصق وتُرسل إلى طابعة. بلا وسيط وبلا مهمة استطلاع وبلا خادم طباعة.
نشران:
- السحابة - المنصة تستهلك الموضوع بنفسها (Confluent Cloud أو MSK أو أي وسيط متاح عبر الإنترنت).
- محلي - وسيط داخل شبكتك، يستهلكه وكيل CLI zplCloud. بيانات اعتماد الوسيط لا تغادر شبكتك أبدًا.
ماذا يربط الاشتراك
أربعة أشياء: موضوع وتصميم ملصق وطابعة و—في الوضع السحابي—إعداد اتصال الوسيط. لكل رسالة المنصة:
1. تحلل القيمة كـ JSON وتستخدم مفاتيح الكائن كروابط حقول،
2. تنشئ التصميم بنفس المحرك الذي يستخدمه المصمم،
3. ترسل ZPL الناتج إلى الطابعة (Weblink، أو طابعة بعيدة على وكيل CLI عبر TCP 9100 / USB).
إذا لم تكن القيمة 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>
القيم الافتراضية عند عدم ضبطها:
| الإعداد | الافتراضي | لماذا يهم |
|---|---|---|
AutoOffsetReset | Latest | اشتراك جديد يبدأ من الرأس—لا يطبع تاريخ الموضوع كله عند أول بدء |
EnableAutoCommit | false | تُثبَّت الإزاحات من المنصة، بعد طباعة ناجحة—ليس بمؤقت |
AutoCommitIntervalMs | 0 | غير ذي صلة ما دام الالتزام التلقائي مغلقًا |
AutoOffsetReset=Earliest هو الاختيار المتعمد لإعادة تشغيل موضوع. اضبطه فقط إن كنت تقصده فعلًا: في موضوع بتاريخ، أول بدء يطبع كل شيء.
تدعم 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—وسيط غير متاح، مصادقة مرفوضة، موضوع اختفى—تُعالج بشكل مختلف. ليس ذلك فشل طباعة، لذا يعيد المستهلك المحاولة بـتراجع أسي يبدأ من 5 ثوانٍ وبسقف 60 ثانية، ويعرض آخر خطأ وسيط على الاشتراك.
إبقاء الحياة في الخمول
إذا لم تصل رسالة لمدة 60 ثانية، ترسل المنصة أمر إيقاظ للطابعة المستهدفة. طابعات Link-OS تدخل حالة استهلاك منخفض؛ دون الإبقاء، أول رسالة بعد فترة هادئة تدفع زمن الاستيقاظ قبل الطباعة. الإبقاء يمس الطابعة لا الموضوع—لا يُستهلك أو يُثبَّت أي إزاحة.
إنشاء الاشتراك
| الحقل | القيمة |
|---|---|
| الاسم | Production labels |
| النوع | سحابة (إنترنت) أو محلي (عبر zplCloudCli) |
| إعداد الاتصال | سحابة فقط: BootstrapServers=…;… |
| الوكيل + الوسيط | محلي فقط: اختر الوكيل ورقاقة الوسيط |
| الموضوع | production.orders |
| تصميم الملصق | التصميم الذي تطابق روابطه مفاتيح الرسالة |
| الطابعة | طابعة Weblink أو طابعة بعيدة على وكيل CLI |
اضغط ابدأ. يعرض الاشتراك بعدها الحالة الحية—متصل، وقت آخر رسالة، آخر إزاحة، عدد الرسائل—وسجلًا بقيم الرسائل الحديثة ونتيجة طباعتها.
شكل الرسالة
{ "ean": "40063813", "qty": 2, "dest": "Ramp 4" }
تطابق المفاتيح الروابط بالاسم. المفاتيح التي لا يستخدمها ربط تُتجاهل؛ الروابط دون مفتاح مطابق تُنشأ فارغة. صمّم الملصق على رسالة حقيقية قبل الانتقال الحي—بيانات الاختبار في المصمم يقبل JSON ملصوقًا.
سلوك إعادة التشغيل
الاشتراكات النشطة تعيد التشغيل عند إعادة تشغيل المنصة، والاشتراكات المحلية تعيد التشغيل عندما يعيد وكيل CLI الاتصال. نافذة صيانة ليلية أو اتصال منقطع لا يتطلبان أن يضغط أحد ابدأ مرة أخرى—مع الاستثناء أعلاه: الاشتراك المتوقف بسبب فشل طباعة يبقى متوقفًا حتى تصلح الطابعة وتشغّله.
الخطط
تدفق البيانات مدفوع القياس. Starter يتضمنه للاختبار، بسقف 100 ملصق متدفق شهريًا. Pro يتضمن نقطتي تدفق (Kafka / Azure Service Bus)؛ كل نقطة إضافية 10 € شهريًا. انظر صفحة الأسعار.