手上有個(gè)項(xiàng)目需要通過SMTP協(xié)議由第三方向目標(biāo)郵箱發(fā)送郵件糊闽,但在向第三方發(fā)送請(qǐng)求的耗時(shí)實(shí)在太長(zhǎng),需要10秒左右的時(shí)間谍珊。由于是單方請(qǐng)求不需要回調(diào)治宣,所以決定用沒有返回的異步任務(wù)解決該問題。下面記錄問題的解決過程砌滞。
1侮邀、在Application啟動(dòng)類上加上啟用異步的注解@EnableAsync
2、編寫Config配置類加上@Configuration作為配置類注冊(cè)到springboot中贝润,聲明一個(gè)異步任務(wù)執(zhí)行器類AsyncTaskExecutor加上@Bean注解注冊(cè)到springboot中绊茧。
3、編寫異步任務(wù)類并實(shí)現(xiàn)Serializable接口打掘,在需要異步調(diào)用的方法上加上@Async的異步注解
4华畏、在調(diào)用異步任務(wù)對(duì)象的業(yè)務(wù)類上加上@Scope(“prototype”)注解,使該業(yè)務(wù)類在實(shí)例化時(shí)候變成多例模式
5尊蚁、經(jīng)過測(cè)試亡笑,接口本身的調(diào)用時(shí)間不受異步任務(wù)影響,降到了38毫秒横朋。
6仑乌、成功收到郵件