03.06 Spring如何優雅地發送異步發送通知?

諺檎ZgKt6463


題主應該想問的是在spring框架下如何開發一個“優雅的、異步的”的去執行一個功能吧?至於這個功能是發送一條MQ消息啊還是發送一份郵件、一條短信都可以,重要的是想異步且優雅的執行這些功能。

從上面對題目的分析來看的話,題主可以參考一下我的解決辦法和思路:

  1. 異步代表著你需要開啟一個單獨的線程去做這個事情,這個事情做完了,這個線程需要及時的釋放,避免佔用系統資源。

  2. 既然在Spring框架下開發,那就定義一個bean交給Spring容器去管理這個bean,保持單例的同時還可以複用這個bean,可以在想發MQ消息的時候去用這個bean,發郵件、發短信的時候也可以用,注入一下就可以了。

  3. 當這個發送通知的動作頻繁且量大的時候,就需要用到線程池了,池化技術可以免去了線程臨時創建、銷燬的開銷,還可以保持線程的複用,提升系統的性能。

下面提供在Spring框架下定義一個線程池的bean的步驟:

自己定義一個線程池類繼承ThreadPoolTaskExecutor

為什麼要自己定義一個呢?因為可以做一些定製的工作,比如打印線程池的一些信息啊,打印一些基礎日誌啊,甚至基於線程池裡隊列的阻塞情況做進一步的監控、報警動作也是可以的。代碼如下:

定義一個線程池的bean,其他地方可以直接注入使用

實際使用過程中我們就可以直接:

上面就是我對題主問題理解的回答,如有任何問題或者需要源代碼的話,大家可以直接私信我,免費提供優雅的線程池代碼給大家!

我是【java架構設計】,關注我,持續為您提供Java領域優質內容!


分享到:


相關文章: