سؤال

لقد كنت أحاول العثور على معلومات حول هذا الأمر، ولكن نظرًا لعدم نضج إطار عمل Spring Integration، لم يحالفني الحظ كثيرًا.

هنا هو تدفق العمل المطلوب:

  1. يتم وضع الملفات الجديدة في دليل "الوارد".

  2. يتم التقاط الملفات باستخدام ملف: محول القناة الواردة

  3. يتم دفق محتوى الملف، عدد N من الأسطر في كل مرة، إلى قناة "المرحلة 1"، التي تقوم بتوزيع الخط إلى تمثيل وسيط (مشترك).

  4. يتم توجيه هذا الخط الذي تم تحليله إلى قنوات "المرحلة 2" المتعددة.

  5. تقوم كل قناة "المرحلة 2" بمعالجتها الخاصة على الخطوط N المتاحة لتحويلها إلى تمثيل نهائي.يجب أن تحتوي هذه القناة على قائمة انتظار تضمن عدم إرهاق قناة المرحلة الثانية في حالة معالجة إحدى القنوات بشكل أبطأ بكثير من القنوات الأخرى.

  6. تتم كتابة التمثيل النهائي لخطوط N في ملف.سيكون هناك عدد من ملفات الإخراج بنفس عدد وجهات التوجيه في الخطوة 4.

** يشير الحرف "N" أعلاه إلى أي عدد معقول من الأسطر التي يجب قراءتها في المرة الواحدة، بدءًا من [1، أيًا كان ما يمكنني احتواؤه في الذاكرة بشكل معقول]، ولكن من المؤكد أن يكون دائمًا أقل من عدد الأسطر في الملف الكامل.*

كيف يمكنني إنجاز البث (الخطوات 3، 4، 5) في التكامل الربيع؟من السهل جدًا الاستغناء عن دفق الملفات، لكن ملفاتي كبيرة بما يكفي بحيث لا أستطيع قراءة الملف بأكمله في الذاكرة.

كملاحظة جانبية، لدي تنفيذ عملي لسير العمل هذا بدون Spring Integration، ولكن بما أننا نستخدم Spring Integration في أماكن أخرى في مشروعنا، أود تجربته هنا لمعرفة كيفية أدائه وكيف تكون النتيجة يقارن الكود من حيث الطول والوضوح.

هل كانت مفيدة؟

المحلول

هذه حالة استخدام مثيرة جدًا للاهتمام، وأنا آسف لأنني فاتها لفترة طويلة.إنه بالتأكيد يستحق إنشاء مشكلة من أجله.في الوقت الحالي لدينا دعم في Spring Integration لالتقاط الملفات وإرسالها مراجع لهم حول.يوجد أيضًا بعض الدعم البدائي لتحويل الملفات إلى بايت[] أو سلسلة.

الإجابة هي أنك الآن ستقوم بالخطوة 2 في كود جافا المخصص، وإرسال القطع إلى قناة المرحلة 2.أوصي بعدم إرسال مراجع إلى التدفقات كحمولات للرسائل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top