من الضروري في الآونة الأخيرة تنفيذ مهام التنفيذ المجدولة في المشاريع ، مثل الحساب المحدد لنقاط الأعضاء ، واتصال واجهات الطرف الثالث ، وما إلى ذلك. نظرًا لأن المشروع يستخدم إطار عمل الربيع ، يتم تقديمه هنا بالاقتران مع إطار الربيع.
كتابة الواجبات المنزلية
وهذا هو ، بوجو العادي ، على النحو التالي:
package com.pcmall.task ؛ استيراد org.slf4j.logger ؛ استيراد org.slf4j.loggerfactory ؛ الفئة العامة taska {private static logger logger = loggerfactory.getLogger (taska.class) ؛ public void taska1 () i = 0 ؛ i <100 ؛ i ++) {system.out.println ("---- a1 ----"+i) ؛}} public void taska2 () {for (int i = 0 ؛ i <100 ؛ i ++) {system.out.println ("------ a2 ------- تعيين مهام محددة في ملف تكوين الربيع
<؟ xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3 http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id = "taska"> </bean> <bean id = "taskb"> </bean> </bean id = "taskjoba1" <property name = "targeoBject" recl = value = "taska1"> </splense> <property name = "convalrent" value = "false"> </sprement> </boun> <bean id = "taskjoba2"> <property name = "targetObject" ref = "taska"> </propert id = "taskjobb1"> <property name = "targetObject" ref = "taskb"> </property> <property name = "targetmethod" value = "taskb1> </spleneration> <property name =" convalrent "value =" false "> </spertar value = "taskb2"> </spleneration> <property name = "convalrent" value = "false"> </property> </bean> <bean id = "taska1trigger"> <property name = "jobdetail"> <ref bean = "taskjoba1"/> </propert id = "taska2trigger"> <property name = "jobdetail"> <ref bean = "taskjoba2"/> </sopperation> <property name = "cronexpression"> <value> 0 0/2 * * * *؟ name = "cronexpression"> <value> 0 0/1 * * *؟ </value> </property> </boun> <bean id = "taskb2trigger"> <property name = "JobDetail"> <ref bean = "taskjobb2"/> </propert class = "org.springframework.scheduling.quartz.schedulerfactorybean"> <property name = "triggers"> <list> <ref bean = "taska1trigger" /> <ref bean = "taska2trigger" /> <ref Bean = /> </list> </soppark> </ban> </bans>
يلاحظ
لا يمكن أن يؤدي المشغل إلا إلى تشغيل وظيفة واحدة ، ولكن يمكن تشغيل الوظيفة من خلال مشغلات متعددة ، مما سيؤدي إلى مشاكل في التزامن هذه المرة. في الكوارتز ، إذا كنت لا ترغب في تنفيذ نفس المهمة بشكل متزامن ، فيمكنك تنفيذ statefuljob بدلاً من الوظيفة. إذا كنت تستخدم MethodInvokingJobDetailfactorybean في الربيع ، فيمكنك القيام بذلك عن طريق تعيين خاصية متزامنة = "false".
ملاحظة نهاية
تتضمن فوائد استخدام الكوارتز في الربيع بدلاً من تطبيق واحد:
وضع جميع إعدادات جدولة المهام في نفس المكان يجعل المهام سهلة الصيانة.
ترميز الوظائف ممكن فقط ، ويمكن تعيين المشغل والجدولة بالتكوين
يمكنك استخدام Pojo Java Bean لتنفيذ الوظائف دون تنفيذ واجهة الوظيفة
استخدام مفصل للتعبيرات cron
الأحرف الخاصة التي تسمح بها القيم المسموح بها الحقل
0-59 ثانية ، - * /
0-59 ، - * /
ساعات 0-23 ، - * /
التاريخ 1-31 ، - *؟ / LWC
الأشهر 1-12 أو يناير ديسمبر ،- * /
الأسبوع 1-7 أو الشمس سات ،- *؟ / LC #
سنة (اختيارية) اترك فارغة ، 1970-2099 ، - * /
مثال:
0/5 * * *؟ : تنفيذ كل 5 ثوان
يتم استخدام الحرف "" لتحديد جميع القيم. على سبيل المثال: "" يعني "في الدقيقة" في مجال الدقائق.
ال "؟" يتم استخدام الشخصية فقط في تاريخ ويوم الأسبوع. يتم استخدامه لتحديد "القيم غير الإضافية". إنه مفيد عندما تحتاج إلى تحديد شيء ما بموجب أحد هذين المجالين. سوف تفهم من خلال النظر إلى المثال أدناه.
العنصرين من التاريخ في الشهر والتاريخ في الأسبوع حصريان بعضهما البعض معًا. اضبط علامة استفهام للإشارة إلى أنك لا تريد تعيين هذا الحقل.
يتم استخدام الحرف "-" لتحديد نطاق. على سبيل المثال: "10-12" يعني "10 ، 11 ، 12".
يتم استخدام الحرف "،" لتحديد قيمة إضافية. على سبيل المثال: "Mon ، Wed ، Fri" يعني "Mon ، الأربعاء ، الجمعة" في حقل الأسبوع.
يتم استخدام الحرف "/" لتحديد الزيادة. على سبيل المثال: "0/15" في الحقل الثاني يعني 0 و 15 و 30 و 45 ثانية في الدقيقة. "5/15" يمثل 5 و 20 و 35 و 50 في الساعة في حقل الدقيقة. الرمز "" هو قبل "/" (مثل:/10) يعادل 0 قبل "/" (مثل: 0/10). تذكر جوهرًا واحدًا: كل حقل رقمي للتعبير هو مجموعة من القيم القصوى والحد الأدنى ، مثل: مجموعة الحقول من الثواني والدقائق هي 0-59 ، وحقول التاريخ هي 1-31 ، وحقول الشهر 1-12. يمكن أن تساعدك الحرف "/" في الحصول على القيمة الرقمية المقابلة في كل حقل حرف. على سبيل المثال: لن يتم تشغيل "7/6" إلا في يوليو عندما يكون مجال الشهر ، ولا يعني كل يونيو.
L هي كلمة تم حذفها لـ "Last" والتي يمكن أن تمثل حقول يوم الشهر واليوم في الأسبوع ، لكن المعنى مختلف في الحقلين ، على سبيل المثال ، يمثل حقل يوم الشهر آخر يوم من الشهر. إذا كان حقل يوم الأسبوع يعني "7" أو "SAT" ، إذا كان الرقم مسبقًا في حقل يوم الأسبوع ، فهذا يعني أن الأيام القليلة الماضية من الشهر ، مثل "6L" تعني يوم الجمعة الأخير من الشهر.
يتيح الحرف "W" فقط ظهور حقل التاريخ. يتم استخدام هذه الشخصية لأحدث يوم عمل في التاريخ المحدد. على سبيل المثال: إذا كتبت "15W" في حقل التاريخ ، فهذا يعني: آخر يوم عمل من هذا الشهر في الخامس عشر من هذا الشهر. لذلك ، إذا كان 15 يوم السبت ، فسيتم تشغيل المهمة في الرابع عشر. إذا كان 15 يوم الأحد أفضل ، فسيتم تشغيل المهمة يوم الاثنين ، أي 16. إذا قمت بملء "1W" في حقل التاريخ ، حتى لو كان الأول يوم السبت ، فلن يتم تشغيل المهمة إلا في يوم الاثنين المقبل ، أي الثالث. لا يمكن عبور آخر يوم عمل محدده شخصية "W" إلى الشهر. لا يمكن استخدام الحرف "W" إلا بقيمة منفصلة ، ولا يمكن أن يكون حقلًا رقميًا ، مثل: 1-15W خاطئ.
يمكن استخدام "L" و "W" بطريقة مشتركة في مجال التاريخ ، ويمثل LW يوم العمل في الأسبوع الأخير من الشهر.
لا يُسمح للشخصية "#" إلا بالظهور في مجال الأسبوع. يتم استخدام هذه الشخصية لتحديد يوم معين من الشهر. على سبيل المثال: "6#3" يعني الجمعة من الأسبوع الثالث من الشهر (6 يعني الجمعة ، 3 يعني الأسبوع 3). "2#1" يعني الاثنين من الأسبوع الأول من الشهر. "4#5" يعني الأربعاء من الأسبوع الخامس.
يُسمح للشخصية "C" بالظهور في تاريخ ويوم الأسبوع. تعتمد هذه الشخصية على "تقويم" محدد. وهذا يعني أن قيمة هذا التعبير تعتمد على نتيجة الحساب لـ "التقويم" ذي الصلة. إذا لم يكن هناك جمعية "تقويم" ، فهذا يعادل جميع "التقويمات" المدرجة. على سبيل المثال: حقل التاريخ هو "5C" للإشارة إلى اليوم الأول في "التقويم" المرتبط به ، أو آخر 5 أيام من اليوم الأول من الشهر. يوم الأسبوع هو "1C" وهو ما يعني اليوم الأول في "التقويم" المرتبط به ، أو في اليوم التالي من اليوم الأول من الأسبوع ، أي اليوم التالي من يوم الأحد (الاثنين).
مثال التعبير
"0 0 12 * *؟" تم تشغيله في الساعة 12 ظهراً كل يوم "0 15 10؟ * *" تم تشغيله في الساعة 10:15 صباحًا كل يوم "0 15 10 *؟" يتم تشغيله في الساعة 10:15 صباحًا كل يوم "0 15 10 * *؟ *" يتم تشغيله في الساعة 10:15 صباحًا كل يوم "0/5 14 *؟ 2005" تم تشغيله في الساعة 10:15 صباحًا كل يوم "0 * 14 * *؟" نشأ في الساعة 10:15 صباحًا كل يوم "0/5 14 * *؟" تم تشغيله في الساعة 2:15 مساءً إلى 2:59 مساءً كل يوم "0/5 14 * *؟" تم تشغيله في الساعة 2:15 مساءً إلى 2:55 مساءً كل يوم "0/5 14،18 *؟" يتم تشغيله في 5 دقائق كل يوم من الساعة 2:15 مساءً إلى 2:55 مساءً كل يوم "0/5 14،18 *؟" 0 0-5 14 * *؟ * Mon-Fri "0 15 10 15 *؟" 0 15 10 15 *؟ "0 15 10 15 10 15 *؟" 0 15 15 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1 10 ? * 6L 2002-2005 "تم تشغيله في الساعة 10:15 صباحًا يوم الجمعة الأخير من كل شهر من 2002 إلى 2005" 0 15 10؟ * 6#3 "تم تشغيله في الساعة 10:15 صباحًا يوم الجمعة الثالث من كل شهر
يدمج المقال أعلاه Spring Quartz لتنفيذ جدولة مهمة التوقيت هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.