البرمجة

تكوين شروط تشغيل وتعطيل جدولة المهام في Spring Boot

بالتأكيد، يمكنك جعل @EnableScheduling مشروطًا بناءً على خاصية في التطبيق، وكذلك يمكن تعطيل التحكم بالمتحكمات بناءً على الخصائص. هذا سيتطلب بعض الضبط في تكوين التطبيق.

لبداية، سنقوم بتكوين التطبيق لجعل @EnableScheduling مشروطًا بناءً على خاصية في ملف التهيئة (application.properties أو application.yml). يمكنك تعريف خاصية جديدة، مثل scheduling.enabled, ثم استخدامها لتحديد ما إذا كان يجب تمكين جدولة المهام أم لا. ستبدو ملفات التهيئة الخاصة بك مثل هذا:

في ملف application.properties:

properties
scheduling.enabled=true

أو في ملف application.yml:

yaml
scheduling: enabled: true

ثم، في تكوين التطبيق، يجب عليك التحقق من قيمة هذه الخاصية وتفعيل @EnableScheduling بناءً على ذلك. هذا يمكن تحقيقه عبر استخدام تكوين شرطي بواسطة مكونات التكوين في Spring Boot. يمكنك تحديد الشرط عبر تنفيذ Condition المخصص.

فيما يلي كيف يمكن تحقيق ذلك:

java
import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; public class SchedulingCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { // قم بقراءة قيمة الخاصية من بيئة التطبيق String schedulingEnabled = context.getEnvironment().getProperty("scheduling.enabled"); // إذا كانت القيمة موجودة وتساوي "true"، فقم بتمكين جدولة المهام return schedulingEnabled != null && schedulingEnabled.equalsIgnoreCase("true"); } }

ثم قم بتكوين التطبيق لاستخدام هذا الشرط:

java
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; @Configuration @EnableScheduling @Conditional(SchedulingCondition.class) public class SchedulingConfig { // يمكنك هنا تكوين أي شيء آخر إذا كنت بحاجة إلى ذلك }

بهذا التكوين، ستتم تمكين جدولة المهام فقط إذا كانت الخاصية scheduling.enabled مضبوطة على “true” في ملفات التهيئة.

أما بالنسبة لتعطيل المتحكمات بناءً على الخصائص، فيمكنك اتباع نفس النهج. يمكنك تعريف خاصية جديدة مثل controllers.enabled واستخدامها في شرط لتمكين أو تعطيل تكوين المتحكمات بناءً عليها.

بتطبيق هذه الإجراءات، ستكون قادرًا على تكوين التطبيق بحيث يمكنه تشغيل المهام المجدولة فقط في بيئات محددة بناءً على الخصائص التي تقوم بتعيينها.

المزيد من المعلومات

بالطبع، يمكنني تقديم المزيد من المعلومات حول كيفية تخصيص تشغيل وتعطيل جدولة المهام والمتحكمات في تطبيق Spring Boot بناءً على الخصائص.

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

أولاً، قم بتعريف شرط جديد يحدد ما إذا كان يجب تمكين المتحكمات أم لا:

java
import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; public class ControllersCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { // قراءة قيمة الخاصية من بيئة التطبيق String controllersEnabled = context.getEnvironment().getProperty("controllers.enabled"); // إذا كانت القيمة موجودة وتساوي "false"، فقم بتعطيل المتحكمات return controllersEnabled == null || !controllersEnabled.equalsIgnoreCase("false"); } }

ثم، استخدم هذا الشرط في تكوين التطبيق لتمكين أو تعطيل المتحكمات بناءً على قيمة الخاصية:

java
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @Configuration @EnableWebMvc @Conditional(ControllersCondition.class) public class WebConfig { // تكوينات إضافية إذا لزم الأمر }

بهذا التكوين، ستتم إما تمكين المتحكمات إذا كانت قيمة الخاصية controllers.enabled غير موجودة أو تساوي “true”، أو تعطيلها إذا كانت تساوي “false”.

أما بالنسبة للمزيد من المعلومات حول جدولة المهام في Spring Boot، يُمكنك أيضًا استخدام الإعلان عن المهام المجدولة بناءً على شروط معينة. على سبيل المثال، يمكنك استخدام تعبيرات SpEL (Spring Expression Language) في التعليمات البرمجية لتحديد ما إذا كان يجب تشغيل المهمة أم لا. لهذا الغرض، يُمكنك استخدام الشرط @Conditional مع تعبير SpEL. سأوضح ذلك في الأمثلة التالية:

java
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; @Configuration @EnableScheduling public class SchedulingConfig { @Bean @Conditional(SchedulingCondition.class) // استخدام الشرط لتحديد متى يجب تنفيذ المهمة public MyTask myTask() { return new MyTask(); } } @Component public class MyTask { @Scheduled(fixedRateString = "${task.interval}") // استخدام SpEL لتحديد تردد التكرار public void doSomeBackendJob() { /* تنفيذ المهمة هنا */ } }

في هذا المثال، يتم استخدام تعبير SpEL ${task.interval} لتحديد تردد تكرار المهمة، ويُمكن تعيين قيمة هذا التعبير في ملف التهيئة مثل application.properties أو application.yml. يُمكنك تخصيص هذا التكوين حسب احتياجاتك لتحقيق التشغيل وفقًا للشروط التي تحددها.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر