@service
public
class
myservice
}
/**
* 自定義事件
*/public
class
myevent
extends
}
/**
* 自定義***(觀察者)
*/@component
public
class
mylistener
}
@configuration
@componentscan
@enableasync
public
class
myconfig
; threadpooltaskexecutor executor =
newthreadpooltaskexecutor()
;// 執行緒池維護執行緒的最少數量
executor.
setcorepoolsize(5
);// 執行緒池維護執行緒的最大數量
executor.
setmaxpoolsize(10
);// 快取佇列
executor.
setqueuecapacity(25
);//執行緒名
executor.
setthreadfactory
(namedthreadfactory)
;// 執行緒池初始化
executor.
initialize()
;return executor;
}}
在***方法上新增@async註解,指定自己定義的executor
/**
* 自定義***(觀察者)
*/@component
public
class
mylistener
}
2. 通過@transactionaleventlistener監聽事務提交
可用在事務結束後需要傳送mq的場景,防止事務在生產者傳送訊息後才提交造成的問題
在service的需要事務控制的方法最後傳送自定義事件
@service
public
class
myservice
}
定義***
原理:publisher傳送事件的方法會通過傳入的事件引數查詢與之對應的***物件,將其註冊到乙個容器中,當執行完事務提交操作後,會遍歷容器中的***,執行相應的處理方法。
@component
public
class
transactioneventlistener
}
觀察者模式的好處
1.被觀察者不需要知道觀察者是誰,也不知道有多少觀察者。
2.增加或減少觀察者,都不會影響被觀察者的邏輯
設計模式之Spring中觀察者模式
定義物件之間存在一對多或者一對一依賴,當乙個物件改變狀態,依賴它的物件會收到通知並自動更新。mq其實就屬於一種觀察者模式,發布者發布資訊,訂閱者獲取資訊,訂閱了就能收到資訊,沒訂閱就收不到資訊。優點1.觀察者和被觀察者是抽象耦合的。2.建立一套觸發機制。缺點1 如果乙個被觀察者物件有很多的直接和間接...
C 中觀察者模式的實現 事件
參考c 中的事件是一種典型的觀察者模式 在winform程式中,可訂閱按鈕等控制項引發的事件。事件具有以下屬性 來自microsoftdoc 以下是參照張陽 三種觀察者模式的c 實現的示例 鬧鐘相關方法 private void turnonthealarm datetime?alarmtime v...
觀察者模式的應用
在層與層之間如果存在著直接的相互依賴的關係,那麼可以利用觀察者模式將直接的依賴關係轉化成間接的依賴關係,並且用這種模式降低層與層之間的偶合度.class fg o sgobserver 註冊為作業系統的接收者的物件通過該介面來接收系統訊息 virtual void o essage fg messa...