قدرة الكتلة الكوارتز:
ما سبق بعض الأفكار الشخصية. لنبدأ النص الرئيسي لهذه المقالة. تقدم هذه المقالة بشكل أساسي المحتوى ذي الصلة حول بناء مجموعات Spring Boot + Quartz. يتم مشاركته للرجوع إليه وتعلمك. لن أقول الكثير أدناه. دعونا نلقي نظرة على المقدمة التفصيلية معًا.
الخطوات كما يلي:
تكوين حبوب الحذاء الربيعي:
ConfigurationPublic Class QuartzConfig {value ("$ {quartz.scheduler.instancename}") سلسلة خاصة quartzinstancename ؛ Value ("$ {org.quartz.datasource.myds.driver}") سلسلة خاصة myDsdriver ؛ value ("$ {org.quartz.datasource.myds.url}") سلسلة خاصة myDsuser ؛ value ("$ {org.quartz.datasource.myds.password}") سلسلة خاصة myDspassword ؛ Value ("$ {org.quartz.datasource.myds.maxConnections}") سلسلة خاصة myDsmaxConnections ؛ / ** * تعيين خصائص * return * throws ioException */ خصائص خاصة QuartzProperties () يلقي ioException {properties prop = new properties () ؛ prop.put ("quartz.scheduler.instancename" ، quartzinstancename) ؛ prop.put ("org.quartz.scheduler.instanceid" ، "auto") ؛ prop.put ("org.quartz.scheduler.skipupdatecheck" ، "true") ؛ prop.put ("org.quartz.scheduler.jmx.export" ، "true") ؛ prop.put ("org.quartz.jobstore.class" ، "org.quartz.impl.jdbcjobstore.jobstoretx") ؛ prop.put ("org.quartz.jobstore.driverdlegateClass" ، "org.quartz.impl.jdbcoBstore.stdjdbcdelegate") ؛ prop.put ("org.quartz.jobstore.datasource" ، "QuartzDataSource") ؛ prop.put ("org.quartz.jobstore.tablePrefix" ، "qrtz_") ؛ prop.put ("org.quartz.jobstore.isclustered" ، "true") ؛ prop.put ("org.quartz.jobstore.clusterCheckinInterval" ، "20000") ؛ prop.put ("org.quartz.jobstore.datasource" ، "myds") ؛ prop.put ("org.quartz.jobstore.maxmisfirestoHandLeatatime" ، "1") ؛ prop.put ("org.quartz.jobstore.misfirethreshold" ، "120000") ؛ prop.put ("org.quartz.jobstore.txisoLationLevelSerializable" ، "true") ؛ prop.put ("org.quartz.jobstore.selectwithlocksql" ، "SELECT * from {0} locks where lock_name =؟ for Update") ؛ prop.put ("org.quartz.threadpool.class" ، "org.quartz.simpl.simplethreadpool") ؛ prop.put ("org.quartz.threadpool.ThreadCount" ، "10") ؛ prop.put ("org.quartz.threadpool.ThreadPriority" ، "5") ؛ prop.put ("org.quartz.threadpool.ThreadSinheritContextClassLaStLovInitializingThread" ، "true") ؛ prop.put ("org.quartz.datasource.myds.driver" ، myDsdriver) ؛ prop.put ("org.quartz.datasource.myds.url" ، myDSURL) ؛ prop.put ("org.quartz.datasource.myds.user" ، myDsuser) ؛ prop.put ("org.quartz.datasource.myds.password" ، myDsPassword) ؛ System.out.println ("MyDsMaxConnections:" + myDsMaxConnections) ؛ prop.put ("org.quartz.datasource.myds.maxConnections" ، myDSMaxConnections) ؛ prop.put ("org.quartz.plugin.trigghistory.class" ، "org.quartz.plugins.history.loggjobhistoryplugin") ؛ prop.put ("org.quartz.plugin.shutdownhook.class" ، "org.quartz.plugins.shutdownhookplugin") ؛ prop.put ("org.quartz.plugin.shutdownhook.cleanshutdown" ، "true") ؛ إرجاع الدعامة ؛ } bean public schedulerfactorybean schedulerfactorybean (QAlifier ("dialogjobtrigger") توجيه cronjobtrigger) يلقي ioException {SchedulerFactoryBean factory = new SchedulerFactoryBean () ؛ // هذا يسمح بتحديث المشغلات في DB عند تحديث الإعدادات في ملف config: // المستخدمة في نظام الكوارتز ، يقوم QuartzScheduler بتحديث الوظائف الموجودة عند البدء ، بحيث لا توجد حاجة لحذف جدول QRTZ_JOB_Details بعد تعديل الهدف. السجل المقابل للمصنع. // المستخدمة في نظام الكوارتز ، تحميل مصدر بيانات الكوارتز //factory.setDatasource(datasource) ؛ // Quartzscheduler تأخير بدء التشغيل ، بعد 10 ثوان من بدء التشغيل ، QuartzScheduler يبدأ Factory.SetStartupDelay (10) ؛ // المستخدمة في نظام الكوارتز ، تحميل مصنع تكوين مصدر بيانات الكوارتز. المصنع. مصنع. // سجل Trigger Factory.SetTriggers (cronjobtrigger) ؛ <br-fildered = "filtered"> // استخدم ملف التكوين مباشرة // factory.setConfigLocation (ملفات ملفات جديدة (this.getclass (). getResource ("/quartz.properties") عودة المصنع } / ** * تحميل وظيفة * regurn * / bean public jobdetailfactorybean updateialogstatjobdetail () {return createJobDetail (invokingjobdetaildetailfactory.class ، "updatedialogstatgroup" ، "dialogjob") ؛ }/** * قم بتحميل Trigger * @param jobdetail * regurn */ @bean (name = "dialogjobtrigger") public crontriggerfactorybean dialogStatUSJobTrigger (QAalifier ("updatialogStAtaSjobDetail ؟ ") ؛ } / ** * إنشاء Job Factory * param Jobclass * param groupname * param targetObject * @return * / private static jobdetailfactorybean createJobDetail (class <؟ Factorybean.setJobclass (Jobclass) ؛ Factorybean.setDable (True) ؛ Factorybean.setRequestSrecovery (True) ؛ Factorybean.setGroup (GroupName) ؛ الخريطة <string ، string> map = new HashMap <> () ؛ map.put ("TargetObject" ، TargetObject) ؛ map.put ("TargetMethod" ، "Execute") ؛ Factorybean.setjobdataasmap (MAP) ؛ العودة المصنع ؛ } / ** * إنشاء مصنع Trigger * param JobDetail * param cronexpression * @return * / private crontriggerfactorybean dialogstatustrigger (JobDetail JobDetail ، String cronexpression) {crontriggerfactorybean factorybean = new crontriggerbean () ؛ Factorybean.setJobDetail (JobDetail) ؛ Factorybean.setCronexpression (cronexpression) ؛ العودة المصنع ؛ }}كائن invokingjobdetaildetailfactory:
الطبقة العامة invokingjobdetaildetailfactory تمتد Quartzjobbean {// الفئة حيث تقع المهمة المجدولة على سلسلة خاصة ؛ // يجب تنفيذ المهمة المجدولة المحددة للسلسلة الخاصة ؛ Application CTX ApplicationContext ؛ Override محمية void executeinternal (سياق JobexecutionContext) يلقي JobexecutionException {try {object oargetObject = ctx.getBean (targetObject) ؛ الطريقة م = فارغة ؛ حاول {m = oargetObject.getClass (). getMethod (targetMethod) ؛ M.Invoke (OtargetObject) ؛ } catch (SecurityException e) {E.PrintStackTrace () ؛ } catch (nosuchmethodexception e) {e.printStackTrace () ؛ }} catch (استثناء e) {رمي JobexecutionException جديد (e) ؛ }} public void setapplicationContext (ApplicationContext ApplicationContext) {this.ctx = applicationContext ؛ } public void settargetObject (String TargetObject) {this.targetObject = targetObject ؛ } public void settargetMethod (String TargetMethod) {this.targetMethod = targetMethod ؛ }}ملاحظة: يجب ألا تكون طريقة SET مفقودة. يرتبط ApplicationContext في setapplicationContext بالقيمة المملوءة في المصنع. يتم تنفيذ المبدأ من قبل BeanWrapper في فئة الوالدين invokingjobdetaildetailfactory.
نص SQL:-
<em id = "__ mcedel">- هيكل الجدول `qrtz_blob_triggers`-- إنشاء جدول إذا لم يكن موجودًا` qrtz_blob_triggers` (`sched_name` varchar (120) not null ،` trigger_name` varchar (120) null ، المحرك = innodb الافتراضي charset = utf8mb4 ؛ - ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- `time_zone_id` varchar (80) افتراضي null) المحرك = innodb الافتراضي charset = utf8mb4 ؛ -- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- `trigger_name` varchar (120) not null ،` trigger_group` varchar (120) not null ، `exate_name` varchar (120) not null ،` fired_time` bigint (13) null ، `job_name` varchar (120) الافتراضي الفارغ ،` job_group` varchar (120) الافتراضي الفارغ ، `is_nonconcurrent` varchar (1) null null ،` requests_recovery` varchar (1) default) محرك charset charset = utf8mb4 ؛ -- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- EXISTS `qrtz_job_details` (`sched_name` varchar (120) not null ،` job_name` varchar (120) not null ، `job_group` varchar (120) not nupl ،` description` varchar (250) default null ، `job_class_name` varchar (250) null ،` is_dedible` not not not varchar (1) not null ، `is_update_data` varchar (1) not null ،` requests_recovery` varchar (1) not null ، `job_data` blob) engine = innodb default charset = utf8mb4 ؛ -- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- NULL, `LOCK_NAME` varchar (40) not null) Engine = innodb default charset = utf8mb4 ؛ -- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- المحرك = innodb الافتراضي charset = utf8mb4 ؛ - --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- `checkin_interval` bigint (13) not null) Engine = innodb الافتراضي charset = utf8mb4 ؛ -- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- `trigger_group` varchar (120) not null ،` repert_count` bigint (7) not null ، `repert_interval` bigint (12) not null ،` times_triggered` bigint (10) not null) engine = innodb devault charset = utf8mb4 ؛ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- `qrtz_simprop_triggers` (` sched_name` varchar (120) not null ، `trigger_name` varchar (120) not null ،` trigger_group` varchar (120) not null ، `str_prop_3` varchar (512) الافتراضي الفارغ ،` int_prop_1` int (11) null null ، `int_prop_2` int (11) null null ،` long_prop_1` bigint (20) null ، `long_prop_2` bigint (20) default null ،` devult null ، `bool_prop_1` varchar (1) null null ،` bool_prop_2` varchar (1) default null) Engine = innodb default charset = utf8mb4 ؛ -- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- `trigger_group` varchar (120) not null ،` job_name` varchar (120) not null ، `job_group` varchar (120) not noth null ،` description` varchar (250) default null ، `next_fire_time` bigint (13) default null ، null ، `trigger_state` varchar (16) not null ،` trigger_type` varchar (8) not null ، `start_time` bigint (13) not null ،` end_time` bigint (13) default null ، blob) المحرك = innodb الافتراضي charset = utf8mb4 ؛ --- فهارس لجداول مغمورة---- فهارس الجدول `qrtz_blob_triggers`-- table` qrtz_blob_triggers` إضافة المفتاح الأساسي (`sched_name` ،` trigger_name` ، `trigger_group`) ، إضافة مفتاح` sched_name` (`Sched_Name` ،` trigger_name` ، `trigger_group`) ؛ --- فهارس الجدول `qrtz_calendars`-- table table` qrtz_calendars` إضافة المفتاح الأساسي (`sched_name` ،` calendar_name`) ؛ --- فهارس الجدول `qrtz_cron_triggers`-- table table` qrtz_cron_triggers`-- table table `qrtz_cron_triggers` إضافة المفتاح الأساسي (` sched_name` ، `trigger_name` ،` trigger_group`) ؛ --- فهارس الجدول `qrtz_fired_triggers`-- table table` qrtz_fired_triggers` إضافة المفتاح الأساسي (`sched_name` ،` intrad_id`) ، إضافة مفتاح `idx_qrtz_ft_trig_inst_name` (` sched_name ، `extle_name`) ، إضافة مفتاح `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY` (` SCHED_NAME` ، `extal_name` ،` requests_recovery`) ، أضف مفتاح `idx_qrtz_ft_j_j_g_g` (` sched_name` ، `job_name` ،` job_. (`sched_name` ،` job_group`) ، إضافة مفتاح `idx_qrtz_ft_t_g` (` sched_name` ، `trigger_name` ،` trigger_group`) ، إضافة مفتاح `idx_qrtz_ft_tg` (` sched_name` ، `trigger_group`) ؛ --- فهارس الجدول `qrtz_job_details`-- table table` qrtz_job_details` إضافة المفتاح الأساسي (`sched_name` ،` job_name` ، `job_group`) ، إضافة مفتاح` idx_qrtz_j_req_recovery` (`scled_name`) `` idx_qrtz_j_grp` (`sched_name` ،` job_group`) ؛ --- فهارس الجدول `qrtz_locks`-- table table` qrtz_locks` إضافة المفتاح الأساسي (`sched_name` ،` lock_name`) ؛ --- فهارس الجدول `qrtz_paused_trigger_grps`-- table table` qrtz_paused_trigger_grps` إضافة المفتاح الأساسي (`sched_name` ،` trigger_group`) ؛ --- فهارس الجدول `qrtz_scheduler_state`-- table table` qrtz_scheduler_state` إضافة المفتاح الأساسي (`sched_name` ،` exate_name`) ؛ --- فهارس الجدول `qrtz_simple_triggers`-- table table` qrtz_simple_triggers` إضافة المفتاح الأساسي (`sched_name` ،` trigger_name` ، `trigger_group`) ؛ --- فهارس الجدول `qrtz_simple_triggers`-- table table` qrtz_simple_triggers` إضافة المفتاح الأساسي (`sched_name` ،` trigger_name` ، `trigger_group`) ؛ --- فهارس الجدول `qrtz_triggers`-- table table` qrtz_triggers` إضافة المفتاح الأساسي (`sched_name` ،` trigger_name` ، `trigger_group`) ، إضافة مفتاح` idx_qrtz_t_j` (`sched_name ،` job_name` ، `job_name`) ، `` idx_qrtz_t_jg` (`sched_name` ،` job_group`) ، إضافة مفتاح `idx_qrtz_t_c` (` sched_name` ، `calendar_name` (191)) ، إضافة مفتاح` idx_qrtz_t_g` (`sched_name` ،` trigger_group`) `idx_qrtz_t_state` (` sched_name` ، `trigger_state`) ، أضف مفتاح` idx_qrtz_t_n_state` (`sched_name` ،` trigger_name` ، `trigger_group` ،` trigger_state`) (`sched_name` ،` trigger_group` ، `trigger_state`) ، أضف مفتاح` idx_qrtz_t_next_fire_time` (`sched_name` ،` next_fire_time`) ، إضافة مفتاح `idx_qrtz_t_nft_st`` (`sched_name` ،` trigger_state` ، `next_fire_time`) ، أضف مفتاح` idx_qrtz_t_nft_misfire` (`sched_name` ،` misfire_instr` ، `next_fire_time`) (`sched_name` ،` misfire_instr` ، `next_fire_time` ،` trigger_state`) ، أضف مفتاح `idx_qrtz_t_nft_st_misfire_grp` (` sched_name` ، `misfire_intr` ، --- الحد من الجداول المصدرة --- الحد من الجداول `qrtz_blob_triggers`-- table table` qrtz_blob_triggers` إضافة قيد `qrtz_blob_triggers_ibfk_1` المفتاح الأجنبي (` sched_name` ، `trigger_name` ،` trigger_group`). (`Sched_Name` ،` trigger_name` ، `trigger_group`) ؛ --- جدول الحد `qrtz_cron_triggers`-- table table` qrtz_cron_triggers` إضافة قيد `qrtz_cron_triggers_ibfk_1` المفتاح الخارجي (` sched_name` ، `trigger_name` ،` trigger_group`) مرجع ` `trigger_name` ،` trigger_group`) ؛ --- جدول التقييد `qrtz_simple_triggers`-- table table` qrtz_simple_triggers` إضافة قيد `qrtz_simple_triggers_ibfk_1` المفتاح الأجنبي (` sched_name` ، `trigger_name` ، `trigger_name` ،` trigger_group`) ؛ --- جدول الحد `qrtz_simprop_triggers`-- table table` qrtz_simprop_triggers` أضف قيودًا `qrtz_simprop_triggers_ibfk_1` الخارج `trigger_name` ،` trigger_group`) المراجع `qrtz_triggers` (` sched_name` ، `trigger_name` ،` trigger_group`) ؛ --- جدول التقييد `qrtz_triggers`-- table table` qrtz_triggers` أضف قيودًا `qrtz_triggers_ibfk_1` المفتاح الأجنبي (` sched_name` ، `job_name` ،` job_group`) المراجع `qrtz_job_deletails` `job_group`) ؛ <br> <br> <br> </em>
يستخدم مبدأ التنفيذ الخاص بـ Quartz Cluster قاعدة البيانات لتسجيل سلوك الوظيفة ، ومن خلال آلية القفل ، يتم تشغيل المهمة مرة واحدة فقط في نفس الوقت.
مثال Jobbean
// يجب تسليمها إلى Spring لإدارة Service ("DialogJob") DialogJob {Autowired private QuestionService ؛ }}لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.