2016-08-01 4 views
1

単一のcom.tangosol.util.MapListenerインスタンスを使用して複数のCoherenceキャッシュをリスンすることはできますか?以下のコードスニペットからわかるように、私はMapListenerのインスタンスを作成し、同じインスタンスを使用して複数のコヒーレンスキャッシュをリスンしました。私の懸念は、複数のイベントが両方のキャッシュから生成される場合に、このコードが機能するかどうかです。同じcom.tangosol.util.MapListenerインスタンスを使用して複数のキャッシュを聴くことはできますか?

protected class MapListenerImpl implements MapListener { 

    @Override 
    public void entryDeleted(MapEvent event) { 
     System.out.println("Delete Event: " + event.getOldEntry()); 
    } 

    @Override 
    public void entryInserted(MapEvent event) { 
     System.out.println("INsert Event: " + event.getNewEntry()); 

    } 

    @Override 
    public void entryUpdated(MapEvent event) { 
     System.out.println("Update Event: " + event.getNewEntry()); 

    }  
} 

//Main Method 
public static void main(String[] args) { 
    //Initializing the caches here 
    NamedCache mapTrades1; 
    NamedCache mapTrades2; 

    MapListener listener = new MapListenerImpl(); 

    mapTrades1.addMapListener(listener); 
    mapTrades2.addMapListener(listener); 
} 

答えて

1

どのマップにイベントが対応しているかを判断するのは難しいかもしれませんが、イベントを別々に保つ必要があるが、共有状態を維持する必要がある場合は、別々のリスナーオブジェクトを作成することをお勧めしますが、それらの両方に単一の共有状態オブジェクトへの参照を保持させることをお勧めします。

関連する問題