91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解SpringBoot開發案例之整合定時任務(Scheduled)

發布時間:2020-10-13 08:00:12 來源:腳本之家 閱讀:195 作者:小柒 欄目:編程語言

來來來小伙伴們,基于上篇的郵件服務,定時任務就不單獨分項目了,天然整合進了郵件服務中。

不知道,大家在工作之中,經常會用到那些定時任務去執行特定的業務,這里列舉一下我在工作中曾經使用到的幾種實現。

任務介紹

  1. Java自帶的java.util.Timer類,這個類允許你調度一個java.util.TimerTask任務。Timer的優點在于簡單易用;缺點是Timer的所有任務都是由同一個線程調度的,因此所有任務都是串行執行的。同一時間只能有一個任務在執行,前一個任務的延遲或異常都將會影響到之后的任務。這種實現已經被項目所廢棄。
  2. 開源集群任務框架Quartz,這是一個功能比較強大的的調度器,適合做任務集群,解決單點故障,目前項目中在使用。
  3. Spring家族自帶的Scheduled,可以將它看成一個輕量級的Quartz,而且使用起來比Quartz簡單許多,適用于簡單的任務,微服務使用很方便。

項目應用

創建任務

代碼中,可以發現,sendMail方法上注解被注釋掉了,目前我們采用的是xml配置實現的。

import org.springframework.stereotype.Component;
/**
 * 統計失敗郵件定時重新發送
 * 創建時間 2017年7月21日
 *
 */
@Component("sendMail")
public class SendMail {
 //@Scheduled(cron = "0/5 * * * * ?")
 public void sendMail() {
  System.out.println("統計失敗郵件定時重新發送開始");
 }
}

配置文件

 <!-- 配置任務線性池 -->
<task:executor id="executor" pool-size="5" /> 
<task:scheduler id="scheduler" pool-size="5"/>
<!-- 啟用注解驅動的定時任務 -->
<task:annotation-driven executor="executor" scheduler="scheduler" proxy-target-class="true"/>
<task:scheduled-tasks scheduler="scheduler">
  <!-- 統計失敗郵件定時重新發送 -->
  <task:scheduled ref="sendMail" method="sendMail" cron="0/5 * * * * ?"/> 
</task:scheduled-tasks>

啟動項目

/**
 * 啟動類
 * 創建時間 2017年7月19日
 *
 */
@EnableAutoConfiguration
@ComponentScan(basePackages={"com.itstyle.main"})
@ImportResource({"classpath:spring-context-dubbo.xml","classpath:spring-context-task.xml"})
public class Application {
 private static final Logger logger = Logger.getLogger(Application.class);
 public static void main(String[] args) throws InterruptedException {
  SpringApplication.run(Application.class, args);
  logger.info("項目啟動 ");
 }
}

啟動后,控制臺會每5s打印”統計失敗郵件定時重新發送開始”。當然Scheduled的功能不僅僅如此,我們查找源碼Scheduled類,可以發現還有一些注解屬性,這里就不一一為大家介紹了。總之,要養成查看源碼API的習慣。

@Target({ java.lang.annotation.ElementType.METHOD,
  java.lang.annotation.ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(Schedules.class)
public @interface Scheduled {
 public abstract String cron();
 public abstract String zone();
 public abstract long fixedDelay();
 public abstract String fixedDelayString();
 public abstract long fixedRate();
 public abstract String fixedRateString();
 public abstract long initialDelay();
 public abstract String initialDelayString();
}


項目:spring-boot-mail_jb51.rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

温宿县| 阳东县| 封开县| 突泉县| 朔州市| 佳木斯市| 九江县| 阳东县| 沂南县| 凤凰县| 团风县| 宁阳县| 西盟| 沾化县| 沙河市| 迁安市| 武邑县| 苏尼特右旗| 南开区| 财经| 东阿县| 区。| 泸溪县| 山阴县| 保康县| 绩溪县| 安远县| 祥云县| 乐平市| 亳州市| 色达县| 清新县| 保山市| 永川市| 绵竹市| 沙洋县| 缙云县| 奉贤区| 巴马| 郴州市| 枞阳县|