Spring事件非同步使用簡易教程

2021-07-27 01:43:13 字數 1152 閱讀 2117

spring事件傳送監聽由3個部分組成

注意!預設情況下是同步的,事件被publish後會等待listener的處理

以下是實現**

public messageevent(object source)

}

@component}}

}

@component

try catch (interruptedexception e)

system.out.println("i got messageevent");

}}

實現非同步的事件傳送與監聽

1.新增@asycn註解

2.使用task標籤使註解生效

3.配置executor

@component

@async

try catch (interruptedexception e)

system.out.println("i got messageevent");

}}

xml

配置引數:

id:當配置多個executor時,被@async("id")指定使用;也被作為執行緒名的字首。

pool-size:執行緒數數

queue-capacity:當最小的執行緒數已經被占用滿後,新的任務會被放進queue裡面,當這個 queue的capacity也被佔滿之後,pool裡面會建立新執行緒處理這個任務,直到匯流排程數達到了max size,這時系統會拒絕這個任務並丟擲taskrejectedexception異常(預設配置的情況下,可以通過rejection-policy 來決定如何處理這種情況)

keep-alive:超過size的那些執行緒,任務完成後,再經過這個時長(秒)會被結束掉

rejection-policy:當pool已經達到size的時候,如何處理新任務

abort(預設):丟擲taskrejectedexception異常,然後不執行

discard:不執行,也不丟擲異常

discard_oldest:丟棄queue中最舊的那個任務

caller_runs:不在新執行緒中執行任務,而是有呼叫者所在的執行緒來執行

spring 事件使用

1.事件定義 import lombok.data import 事件定義,這裡監聽msgmessage訊息物件 data public private msgmessage message public super source this.message message 2.事件監聽 import...

Quartz使用與Spring整合系列教程

quartz的使用 url quartz的scheduler初始化原始碼分析 url quartz的job 觸發器的暫停與恢復原始碼分析 url quartz的job儲存,觸發器 任務刪除,原始碼分析 url quartzs的job,trriger 原始碼分析 url quartz 任務儲存jobs...

使用Spring的事件機制

其次就需要去定義事件,例如流程結束事件,乙個購物系統當訂單流程已經結束了,我們需要通知發貨員發貨,這個時候我們的這個通知發貨,就是乙個觀察者,我們需要實現通知,比如簡訊,郵件通知,來告知物流 下面這幅圖,是我畫的很簡單的乙個圖,這就是核心的方法和核心的類。img 然後我們看看源 是怎麼做的 樣例 自...