سؤال

أنا أستخدم دفعة الربيع لنظام يقوم بالكثير من عمليات الدُفعات.
أنا أستخدم SimpleJobRepository مع DAOs في الذاكرة.
أود أن أعرف ما إذا كانت هناك طريقة لتجنب استخدام jobrepository؟ شيء مشابه لمدير المعاملات بلا موارد؟
السبب الذي أسأله هو أن النظام يجب أن يعمل باستمرار دون إعادة التشغيل ولدي بعض المخاوف بشأن الذاكرة التي ستستهلكها.
أعلم أنه يمكنني استخدام JobRepositry المستندة إلى قاعدة البيانات ، لكن بصراحة ، لا أحتاج حقًا على الإطلاق.

إذا لم تكن هناك طريقة للقيام بذلك ، فسأقدر ذلك إذا كان بإمكان شخص ما أن يطمئنني بشأن مشكلة استهلاك الذاكرة.

شكرًا.

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

المحلول

يجب عليك استخدام مستودع الوظائف لأنه يحمل معلومات حول سياق الوظيفة. إن الحل لحالتك هو - اجعل مستودع الوظائف الخاص بك مع Scope = "النموذج الأولي" سيؤدي إلى استنشاق DAO في الذاكرة الجديدة (تنفيذ الخريطة) لكل وظيفة ، وبالتالي لا توجد مشكلة في الذاكرة. إن النفقات العامة لإنشاء مثيل جديد في كل مرة لا معنى له من حيث وظائف الدُفعات.

نصائح أخرى

التنفيذ في الذاكرة لديه عيب كبير: لا يمكنك استخدام MultiTreading في دفعاتك.

لذلك يجب عليك استخدام مستودع قاعدة البيانات. أقترح عليك استخدام H2 SQL: إنها قاعدة بيانات مضمنة خفيفة للغاية. نستخدمه لاختبارات الوحدة لدينا.

إنه يعمل بشكل جيد للغاية مع السبات.

ميزة هذه الطريقة على واحدة من بن هي أنه يمكنك الاتصال بقاعدة بيانات الذاكرة الخاصة بك للتحقق من حالات الوظائف (وتاريخ الإطلاق ، إلخ ...).

أعتقد أنه طالما أن رمز معالجة الدُفعات الخاص بي آمن ، فلا ينبغي أن يهم ما إذا كان المستودع في الذاكرة أو قاعدة البيانات. نعم ، قد تفقد بعض فوائد التجميع التي يمكنك الحصول عليها إذا كنت تستخدم DB ولكن إذا كان لديّ وظيفة دفعة واحدة فقط تعمل على خادمي واستخدام ترابطات متعددة للقيام بعملها ، فيجب أن يكون ذلك جيدًا.

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