上下文:我的应用程序使用一个存储库来存储历史记录,使用另一个存储库来存储当前情况快照。当历史记录存储库中发生更改时,我也希望更新快照,并且为此使用了自定义事件处理程序。
问题:此类事件处理程序被执行两次。
我认为是原因:处理程序在另一个存储库中运行,而它们触发了相同的事件。
我虽然只从一个存储库中监听事件,但是我不知道该怎么做,也不知道前面提到的是重复执行的原因。
代码段包含处理程序:
@HandleAfterCreate
public void handleAfterCreateOrUpdate( Subscription subscription ) {
snapshotRepository
.getMapCache( subscriptionsMapName )
.fastPut( subscription.getIdentifier(), subscription );
}
@HandleAfterDelete
public void handleAfterDelete( Subscription subscription ) {
snapshotRepository
.getMapCache( subscriptionsMapName )
.fastRemove( subscription.getIdentifier() );
}