Comment utiliser efficacement par Lots écrit à cassandra à l'aide de datastax pilote java?

J'ai besoin d'écrire dans des Lots de Cassandra à l'aide de Datastax pilote Java et c'est ma première fois que je suis en train d'utiliser le traitement par lots avec datastax pilote java donc je vais avoir un peu de confusion -

Ci-dessous mon code dans lequel je suis en train de faire une Déclaration d'objet et les ajouter dans le Lot et le réglage de la ConsistencyLevel que le QUORUM ainsi.

Session session = null;
Cluster cluster = null;

//we build cluster and session object here and we use  DowngradingConsistencyRetryPolicy as well
//cluster = builder.withSocketOptions(socketOpts).withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE)

public void insertMetadata(List<AddressMetadata> listAddress) {
    //what is the purpose of unloggedBatch here?
    Batch batch = QueryBuilder.unloggedBatch();

    try {
        for (AddressMetadata data : listAddress) {
            Statement insert = insertInto("test_table").values(
                    new String[] { "address", "name", "last_modified_date", "client_id" },
                    new Object[] { data.getAddress(), data.getName(), data.getLastModifiedDate(), 1 });
            //is this the right way to set consistency level for Batch?
            insert.setConsistencyLevel(ConsistencyLevel.QUORUM);
            batch.add(insert);
        }

        //now execute the batch
        session.execute(batch);
    } catch (NoHostAvailableException e) {
        //log an exception
    } catch (QueryExecutionException e) {
        //log an exception
    } catch (QueryValidationException e) {
        //log an exception
    } catch (IllegalStateException e) {
        //log an exception
    } catch (Exception e) {
        //log an exception
    }
}

Et ci-dessous est mon AddressMetadata classe -

public class AddressMetadata {

    private String name;
    private String address;
    private Date lastModifiedDate;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Date getLastModifiedDate() {
        return lastModifiedDate;
    }

    public void setLastModifiedDate(Date lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }
}

Maintenant, ma question est - est-ce la façon dont je suis l'aide de Lot à insérer dans cassandra avec Datastax Java Pilote est correct? Et que dire de réessayer politiques, de sens que si un lot d'exécution de l'instruction a échoué, ce qui va arriver, il va essayer à nouveau?

Et quel est le meilleur moyen de l'utilisation des lots écrit à cassandra à l'aide du pilote java?

InformationsquelleAutor john | 2014-10-08