SpringCloud2.x serisinin Springboot entegrasyonu.

Spring Cloud 2.x serisi springboot entegre kuvars

  • Java tasarım deseninin gözlemci deseni
  • Büyük bir video paylaşımı dalgası
  • Mysql proxy ara yazılımı Atlas kurulumu ve yapılandırması

Bir proje üzerinde çalışırken, belirli bir zamanda ne yapılması gerektiği, kaç saniye olması gerektiği gibi bazen zamanlayıcı görevleri vardır. Zamanlama görevleri için yaygın olarak kullanılan iş senaryosu veri istatistikleridir. Bahar, birden fazla zamanlama görevinin gerçekleştirilmesini destekler.Bugün, yaylı zamanlayıcı ve kuvars zamanlayıcı kullanımını tanıtacağım. Bir, yaylı zamanlayıcı

Spring, zamanlayıcıları destekleyen görev uygulamasıyla birlikte gelir. Basit konfigürasyonla zamanlama görevlerini gerçekleştirebilir. Aşağıdaki iki ek açıklama esas olarak kullanılır:

@EnableScheduling: zamanlanmış görevleri başlatmak için işaretleyin

@Scheduled: Zamanlanmış bir görev tanımlayın

Genel talimatlar:

@Scheduled (fixedRate = 2000): son yürütme zamanından 2 saniye sonra tekrar çalıştırın

@Scheduled (fixedDelay = 2000): son yürütme zamanından 2 saniye sonra tekrar çalıştırın

@Scheduled (initialDelay = 1000, fixedDelay = 2000): İlk yürütme 1 saniye geciktirilir ve ardından son yürütme zaman noktasından 2 saniye sonra tekrar yürütülür

@Scheduled (cron = "** * * *?"): Cron kurallarına göre çalıştırın

İki, kuvars zamanlama görevi

Quzrtz esas olarak aşağıdaki kavramları anlar:

Job: Yalnızca bir yöntem geçersiz yürütme (JobExecutionContext bağlamı) içeren bir arabirimdir.Geliştiriciler bu arabirimi çalışan görevleri tanımlamak için uygular.JobExecutionContext sınıfı, zamanlama bağlamı hakkında çeşitli bilgiler sağlar. İş çalışırken elde edilen bilgiler JobDataMap örneğinde saklanır.

JobDetail: Quartz, bir İşi her yürüttüğünde bir İş örneğini yeniden oluşturur, bu nedenle bir İş örneğini doğrudan kabul etmez, bunun yerine çalışma zamanında newInstance () 'in yansıtma mekanizmasıyla başlatılabilmesi için bir İş uygulama sınıfı alır. Bu nedenle, İşin uygulama sınıfını ve iş adı, açıklaması ve ilişkili dinleyici bilgileri gibi diğer ilgili statik bilgileri açıklamak için bir sınıfa ihtiyaç vardır.JobDetail bu rolü üstlenir.

Tetik: İşin yürütülmesini tetikleyen zaman tetikleme kurallarını tanımlayan bir sınıftır. Temel olarak iki alt sınıf vardır, SimpleTrigger ve CronTrigger. Yalnızca bir kez tetiklenmesi veya belirli bir zaman aralığında periyodik olarak çalıştırılması gerektiğinde, SimpleTrigger en uygun seçimdir; CronTrigger ise Cron ifadeleri aracılığıyla çeşitli karmaşık zaman kuralları çizelgeleme şemalarını tanımlayabilir: örneğin her sabah, pazartesi ve çarşamba her 1: 00'de uygulama , Cuma öğleden sonra infaz vb .;

Takvim: org.quartz.Calendar, java.util.Calendar'dan farklıdır. Zaman içindeki belirli takvim noktalarının bir toplamıdır (org.quartz.Calendar'ı java.util.Calendar-java.util.Calendar'ın bir koleksiyonu olarak düşünebilirsiniz. Bir takvim zaman noktasını ve org.quartz.Calendar olduktan sonraki takvimi özel talimatlar olmadan temsil eder). Bir Tetikleyici, belirli zaman noktalarını hariç tutmak veya dahil etmek için birden çok Takvimle ilişkilendirilebilir. Diyelim ki, görevi her Pazartesi sabahı 10: 00'da yürütülecek şekilde planlıyoruz, ancak yasal bir tatille karşılaşırsa, görev yerine getirilmeyecek. Şu anda, Tetikleyici tetik mekanizmasına dayalı sabit nokta hariç tutma için Takvim'i kullanmamız gerekiyor.

Zamanlayıcı: Bağımsız bir çalışan Quartz konteynerini temsil eder. Trigger ve JobDetail Scheduler'da kaydedilebilir. Her ikisi de kendi gruplarına ve Scheduler'da adına sahiptir. Grup ve ad, Scheduler'ın konteynerde bir nesneyi bulması ve bulması için temel oluşturur. Tetikleyici grubu ve İsim benzersiz olmalı ve JobDetail grubu ve adı da benzersiz olmalıdır (ancak farklı türden olduklarından Tetikleyicinin grubu ve adı ile aynı olabilir). Zamanlayıcı, gruplar ve adlar aracılığıyla kapsayıcıdaki Trigger ve JobDetail'in harici erişimine ve kontrolüne izin veren çoklu arabirim yöntemlerini tanımlar.

1. Yeni bir proje oluşturun ve ilgili pom.xml dosyası aşağıdaki gibidir

< proje xmlns = " xmlns: xsi = "

xsi: schemaLocation = " >

< modelVersion > 4.0.0 < / modelVersion >

< Grup kimliği > bahar bulutu < /Grup kimliği >

< artifactId > sc-programlanmış < / artifactId >

< versiyon > 0.0.1-SNAPSHOT < / version >

< ambalaj > kavanoz < / paketleme >

< isim > sc-programlanmış < / isim >

< url > < / url >

< ebeveyn >

< Grup kimliği > org.springframework.boot < /Grup kimliği >

< artifactId > Spring-boot-starter-ebeveyn < / artifactId >

< versiyon > 2.0.4. YAYIN < / version >

< / ebeveyn >

< bağımlılık yönetimi >

< bağımlılıklar >

< bağımlılık >

< Grup kimliği > org.springframework.cloud < /Grup kimliği >

< artifactId > bahar-bulutu bağımlılıkları < / artifactId >

< versiyon > Finchley. < / version >

< tip > pom < / tür >

< dürbün > ithalat < /dürbün >

< /bağımlılık >

< / bağımlılıklar >

< / dependencyManagement >

< özellikleri >

< project.build.sourceEncoding > UTF-8 < /project.build.sourceEncoding >

< maven.compiler.source > 1.8 < /maven.compiler.source >

< maven.compiler.target > 1.8 < /maven.compiler.target >

< /özellikleri >

< bağımlılıklar >

< bağımlılık >

< Grup kimliği > org.springframework.boot < /Grup kimliği >

< artifactId > yaylı başlangıç < / artifactId >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > org.springframework.boot < /Grup kimliği >

< artifactId > Spring-boot-starter-web < / artifactId >

< /bağımlılık >

< ! - Entegre kuvars tanıtılmalıdır - >

< ! - kuvarsla ilgili bağımlılıklar - >

< ! - < bağımlılık >

< Grup kimliği > org.quartz-scheduler < /Grup kimliği >

< artifactId > kuvars < / artifactId >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > org.quartz-scheduler < /Grup kimliği >

< artifactId > kuvars işleri < / artifactId >

< /bağımlılık > - >

< bağımlılık >

< Grup kimliği > org.springframework.boot < /Grup kimliği >

< artifactId > Spring-boot-starter-kuvars < / artifactId >

< /bağımlılık >

< / bağımlılıklar >

< / proje >

2. Yeni bir sprinboot başlangıç sınıfı ScheduledApplication.java oluşturun

paket sc.schedule;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication

@EnableScheduling // Baharın kendi zamanlama görevini aç

publicclass ScheduledApplication {

public static void main (String args) {

SpringApplication.run (ScheduledApplication.class, args);

}

}

3. Bahar zamanlama görev sınıfı

packagec.schedule.spring;

java.text.SimpleDateFormat'ı içe aktar;

import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

@Bileşen

public class SpringScheduled {

// her 1 dakikada bir çalıştır

@ Planlanmış (cron = "0 * / 1 * ** *")

public void reportCurrentByCron () {

System.out.println ("Bahar Zamanlama Görevleri:" + dateFormat (). Format (yeni Tarih ()));

}

özel SimpleDateFormat dateFormat () {

returnnewSimpleDateFormat ("HH: mm: ss");

}

}

4. Kuvars zamanlama görev sınıfı

Tek görev modu:

paket sc.schedule.quartz;

import org.quartz.JobDetail;

ithalat org.quartz.Trigger;

import org.springframework.context.annotation.Bean;

org.springframework.context.annotation.Configuration dosyasını içe aktarın;

import org.springframework.scheduling.quartz.CronTriggerFactoryBean;

import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;

importorg.springframework.scheduling.quartz.SchedulerFactoryBean;

@Yapılandırma

publicclass QuartzScheduledOne {

@Fasulye

public ScheduledJobOne getScheduledJobOne () {

yeni ScheduledJobOne () döndürür;

}

/ **

* Sevk fabrikası

*

* @ param jobTrigger

* Tetikleyici

*@dönüş

* /

@Bean (isim = "zamanlayıcı")

public SchedulerFactoryBean schedulerFactory (Trigger jobTrigger) {

SchedulerFactoryBeanfactoryBean = new SchedulerFactoryBean ();

// Kuvars kümesinde kullanılan QuartzScheduler, başladığında mevcut işi günceller

factoryBean.setOverwriteExistingJobs (true);

// Uygulama başladıktan 1 saniye sonra gecikmeli başlatma

factoryBean.setStartupDelay (1);

// Tetikleyiciyi kaydet

factoryBean.setTriggers (jobTrigger);

fabrika dönüşüBean;

}

/ **

*

* Zamanlama tetikleyicisi

*

* @ param reptilianJob

* Misyon

*

*@dönüş

*

* /

@Bean (isim = "jobTrigger")

public CronTriggerFactory BeancronJobTrigger (JobDetail jobDetail) {

CronTriggerFactoryBean tigger = newCronTriggerFactoryBean ();

tigger.setJobDetail (jobDetail);

// cron ifadesi, her 1 dakikada bir çalıştırılır

tigger.setCronExpression ("0/20 ** * *?");

tigger.setName ("jobTrigger");

dönüş kaplanı;

}

/ **

* Yapılandırma görevi

*

* @ param quartzTask

* QuartzTask, yürütülmesi gereken görevdir

*@dönüş

* /

@Bean (isim = "jobDetail")

public MethodInvokingJobDetailFactory BeandetailFactoryBean (ScheduledJobOne quartzTask) {

MethodInvokingJobDetailFactoryBeanjobDetail = new MethodInvokingJobDetailFactoryBean ();

// Eşzamanlı olarak çalıştırılıp çalıştırılmayacağı

jobDetail.setConcurrent (false);

// Görevin adını belirleyin

jobDetail.setName ("jobDetail");

// Çoklu görevde kullanılan görev gruplamasını ayarlayın

jobDetail.setGroup ("jobDetailGroup");

// Yürütülecek nesne

jobDetail.setTargetObject (quartzTask);

/ *

* TODO, QuartzTask sınıfında yürütülecek yöntemleri yürütmek için çok önemlidir

* /

jobDetail.setTargetMethod ("execute");

return jobDetail;

}

}

Görev modu referans kaynak kodu

5. İlgili sınıf yapısının açıklaması

6. ScheduledApplication sınıfını başlatın ve zamanlanan görevin başlatılıp başlatılmadığını doğrulayın

(1) QuartzScheduled sınıfının Yapılandırma açıklamasına açıklama ekleyin

Günlüğü görüntülemek için ScheduledApplication sınıfını başlatın:

(2) QuartzScheduled sınıfının Yapılandırma açıklamasını serbest bırakın ve ardından QuartzScheduled sınıfının Yapılandırma açıklamasına açıklama ekleyin

Günlüğü görüntülemek için ScheduledApplication sınıfını başlatın:

Makaleyi iletmeyi unutmayın ~

Yetmiş yaşındaki adam drone aksesuarlarını çaldı ve satmak istedi
önceki
Guo Isırma ve nişanlısı sık sık şefkat gösterirler ve aşktan bu kadar gurur duyan her zaman çok güzel olmuştur.
Sonraki
Yu Hua tarafından imzalanmış bir kitap alma şansı elde etmek için bir mesaj bırakın! Zhuhai Dünya Kitap Gününe en çok hangisine katılmak istiyorsunuz?
Adam iki aylık bebeğin bezini değiştirdi ancak 20 kırığa neden oldu
"One Belt One Road" ruhunun altını çizen Şili Şarap Derneği Turu Sergisi Pekin'de Düzenlendi.
Gao Yuanyuan'ın hamile göbek fotoğrafları ortaya çıktı, kocası Zhao Youting'e dikkatle yardım edildi
Nanning, bir kadının arkadaş çevresinde "ifşa edilmiş hayatı" aslında hırsızları kışkırtıyor ve 100.000 yuan ödedikten sonra buradan kurtulabiliyor.
Spring Cloud 2.x serisi springboot entegre ActiveMQ
21 yaşında, 50 yaşında zengin bir adamla evlendi ve evlendikten yarım ay sonra kocasını kaybetti. 50 yaşında böyle yaşadı.
1 yaşındaki kızın ebeveynleri yanlışlıkla yüksek derecede zehirli böcek ilacı yuttu
Büyük veri sistemi öğrenme yolu (tam bir büyük veri öğrenme öğreticileri ve PDF e-kitapları seti ile)
Luckin Coffee halka açılmak üzere ve Starbucks'ın ikinci hissedarından 800 milyon aldı!
Teknoloji Tanrı Yanıtı | Liu Qiangdong'un vakası yeni bir "kavun" ekliyor, netizenler: zengin çocuklar dışarıda ve kendilerini korumalılar
YOLO V1'den YOLO V3'e hedef tespit algoritmasını anlamak için bir makale
To Top