2016-02-02 1 views
0

Voulait vérifier la fonctionnalité Triggers dans Cassandra. Quelqu'un peut-il s'il vous plaît fournir un exemple pour créer Trigger.Exemple de création de déclencheurs dans Cassandra et est-ce que cela prend uniquement en charge Java?

Depuis ce blog, http://www.datastax.com/dev/blog/whats-new-in-cassandra-2-0-prototype-triggers-support

Pour créer un déclencheur, vous devez d'abord construire un pot avec une classe qui implémente l'interface ITrigger et le mettre dans le répertoire des déclencheurs sur chaque nœud, puis effectuez une demande CQL3 CREATE TRIGGER à attacher votre déclencheur à une table de Cassandra (ou plusieurs tables).

Selon cette information, les déclencheurs dans Cassandra ne sont applicables qu'aux applications basées sur Java?

Répondre

2

Cassandra 3.0

Vous pouvez l'utiliser et vous obtiendrez tout dans l'insert comme JSON

public class HelloWorld implements ITrigger 
{ 
    private static final Logger logger = LoggerFactory.getLogger(HelloWorld.class); 

    public Collection<Mutation> augment(Partition partition) 
    { 
     String tableName = partition.metadata().cfName; 
     logger.info("Table: " + tableName); 

     JSONObject obj = new JSONObject(); 
     obj.put("message_id", partition.metadata().getKeyValidator().getString(partition.partitionKey().getKey())); 

     try { 
      UnfilteredRowIterator it = partition.unfilteredIterator(); 
      while (it.hasNext()) { 
       Unfiltered un = it.next(); 
       Clustering clt = (Clustering) un.clustering(); 
       Iterator<Cell> cells = partition.getRow(clt).cells().iterator(); 
       Iterator<ColumnDefinition> columns = partition.getRow(clt).columns().iterator(); 

       while(columns.hasNext()){ 
        ColumnDefinition columnDef = columns.next(); 
        Cell cell = cells.next(); 
        String data = new String(cell.value().array()); // If cell type is text 
        obj.put(columnDef.toString(), data); 
       } 
      } 
     } catch (Exception e) { 

     } 
     logger.debug(obj.toString()); 

     return Collections.emptyList(); 
    } 
}