الثلاثاء، 10 ديسمبر 2019

الجدولة في الإقلاع او التمهيد الربيع سيرينج بوت Spring Boot Scheduling

الجدولة في الإقلاع او التمهيد الربيع سيرينج بوت Spring Boot  Scheduling

الجدولة في الإقلاع او التمهيد الربيع سيرينج بوت Spring Boot  Scheduling


الجدولة هي عملية تنفيذ المهام لفترة زمنية محددة.  يوفر Spring Boot دعمًا جيدًا لكتابة برنامج جدولة على تطبيقات Spring.

تعابير جافا كرون Java Cron Expression

يتم استخدام تعبيرات Java Cron لتكوين مثيلات CronTrigger ، فئة فرعية من org.quartz.Trigger.  لمزيد من المعلومات حول تعبير Java cron ، يمكنك الرجوع إلى هذا الرابط -

 https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm

 يستخدم الشرح @ EnableScheduling لتمكين برنامج جدولة التطبيق الخاص بك.  يجب إضافة هذا التعليق التوضيحي إلى ملف فئة تطبيق Spring Boot الرئيسي.
@SpringBootApplication
@EnableScheduling

public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
}
يستخدم التعليق التوضيحيScheduled لتشغيل برنامج الجدولة لفترة زمنية محددة.

@Scheduled(cron = "0 * 9 * * ?")
public void cronJobSch() throws Exception {
}
فيما يلي نموذج لرمز يوضح كيفية تنفيذ المهمة كل دقيقة بدءًا من الساعة 9:00 صباحًا وتنتهي الساعة 9:59 صباحًا ، كل يوم

package com.tutorialspoint.demo.scheduler;

import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class Scheduler {
   @Scheduled(cron = "0 * 9 * * ?")
   public void cronJobSch() {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
      Date now = new Date();
      String strDate = sdf.format(now);
      System.out.println("Java cron job expression:: " + strDate);
   }
}
توضح لقطة الشاشة التالية كيف بدأ التطبيق في الساعة 09:03:23 ولكل دقيقة واحدة من ذلك الوقت ، تم تنفيذ مهمة جدولة مهمة cron.

cron job scheduler

المعدل الثابت Fixed Rate

يستخدم جدولة معدل ثابت لتنفيذ المهام في الوقت المحدد.  لا تنتظر الانتهاء من المهمة السابقة.  يجب أن تكون القيم بالميلي ثانية.  يظهر رمز العينة هنا -
@Scheduled(fixedRate = 1000)
public void fixedRateSch() { 
}

يتم عرض نموذج التعليمات البرمجية لتنفيذ مهمة كل ثانية من بدء تشغيل التطبيق هنا -
package com.ahmedalmahallawi.demo.scheduler;

import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class Scheduler {
   @Scheduled(fixedRate = 1000)
   public void fixedRateSch() {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

      Date now = new Date();
      String strDate = sdf.format(now);
      System.out.println("Fixed Rate scheduler:: " + strDate);
   }
}

راقب لقطة الشاشة التالية التي تبين التطبيق الذي بدأ في الساعة 09:12:00 وبعد تنفيذ كل مهمة جدولة لمعدل ثابت.
Fixed Rate Scheduler Task Executed

التاخير الثابت Fixed Delay

يتم استخدام جدولة التأخير الثابت لتنفيذ المهام في وقت محدد.  يجب أن تنتظر إكمال المهمة السابقة.  يجب أن تكون القيم بالميلي ثانية.  يظهر رمز عينة هنا -
@Scheduled(fixedDelay = 1000, initialDelay = 1000)
public void fixedDelaySch() {
}
هنا ، التأخير الأولي هو الوقت الذي سيتم بعده تنفيذ المهمة في المرة الأولى بعد قيمة التأخير الأولي.
 يظهر أدناه مثال لتنفيذ المهمة كل ثانية بعد 3 ثوان من بدء تشغيل التطبيق -

package com.ahmedalmahallawi.demo.scheduler;

import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class Scheduler {
   @Scheduled(fixedDelay = 1000, initialDelay = 3000)
   public void fixedDelaySch() {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
      Date now = new Date();
      String strDate = sdf.format(now);
      System.out.println("Fixed Delay scheduler:: " + strDate);
   }
}
لاحظ لقطة الشاشة التالية التي توضح التطبيق الذي بدأ في الساعة 09:18:39 وبعد كل 3 ثوانٍ ، يتم تنفيذ مهمة جدولة التأخير الثابت في كل ثانية.

Fixed Delay Scheduler Task Executed





التسميات: