2012-11-07 2 views
0

Configuration du cache client -L'événement afterCreate est déclenché même en cas de mise à jour -Comment les événements fonctionnent dans Gemfire?

<region name="test" refid="PROXY"> 
    <region-attributes> 
     <cache-listener> 
      <class-name>com.test.cache.SimpleCacheListener</class-name> 
     </cache-listener> 
    </region-attributes> 
</region> 

Pour la configuration du côté client ci-dessus, je l'ai utilisé un CacheListener qui écoute d'événement pour ce cache "test".

Le problème auquel je suis confronté est même lors d'un événement de mise à jour, c'est-à-dire en mettant une valeur différente pour la même clé dans le cache, un événement afterCreate est déclenché.

à-dire

region.put("test key","test value") 

et

region.put("test key","test updated value") 

à la fois de générer un afterCreateEvent dans Listener.

ÉDITÉ

Permettez-moi d'être peu plus clair sur ce que je veux obtenir here.I veux que mon côté client à notifier tout en faisant une entrée si cette entrée est déjà là dans le serveur de cache ou ne pas.

par exemple. Si l'entrée [Test, Value] existe déjà sur le Cache Server pour une région, alors en faisant un put [Test, Value1], le client doit savoir qu'il s'agit d'une mise à jour et cela doit être fait indépendamment du fait que cette entrée existe dans cache du client ou non.

J'ai essayé quelque chose comme this-

<region name="test" refid="PROXY" > 
     <region-attributes data-policy="normal"> 
     <!-- <region-attributes> --> 
     <subscription-attributes interest-policy="all"/> 
      <cache-listener> 
       <class-name>com.cache.test.SimpleCacheListener</class-name> 
      </cache-listener> 
     </region-attributes> 

    </region> 

Après avoir fait des changements ci-dessus, il détecte les événements de mise à jour, mais seulement si le même client vient de faire une entrée et essayer le mettre à jour et non pour les entrées créées précédemment.

S'il vous plaît aidez-moi et faites-moi savoir si quelque chose me manque.

Répondre

1

Si la clé est en cours de modification sur un cache différent et il n'a pas été présent dans le cache de votre proxy client, alors oui, c'est un événement de création.

+0

Veuillez vérifier le commentaire EDITED. – schhajed

Questions connexes