com.hmsonline.trident.cql.CassandraCqlMapState Maven / Gradle / Ivy
package com.hmsonline.trident.cql;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import storm.trident.state.OpaqueValue;
import storm.trident.state.StateFactory;
import storm.trident.state.StateType;
import storm.trident.state.TransactionalValue;
import storm.trident.state.map.IBackingMap;
import backtype.storm.Config;
import backtype.storm.metric.api.CountMetric;
import backtype.storm.task.IMetricsContext;
import backtype.storm.topology.ReportedFailedException;
import com.datastax.driver.core.BatchStatement;
import com.datastax.driver.core.BatchStatement.Type;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.Statement;
import com.datastax.driver.core.exceptions.AlreadyExistsException;
import com.datastax.driver.core.exceptions.AuthenticationException;
import com.datastax.driver.core.exceptions.DriverException;
import com.datastax.driver.core.exceptions.DriverInternalError;
import com.datastax.driver.core.exceptions.InvalidConfigurationInQueryException;
import com.datastax.driver.core.exceptions.InvalidQueryException;
import com.datastax.driver.core.exceptions.InvalidTypeException;
import com.datastax.driver.core.exceptions.QueryExecutionException;
import com.datastax.driver.core.exceptions.QueryTimeoutException;
import com.datastax.driver.core.exceptions.QueryValidationException;
import com.datastax.driver.core.exceptions.ReadTimeoutException;
import com.datastax.driver.core.exceptions.SyntaxError;
import com.datastax.driver.core.exceptions.TraceRetrievalException;
import com.datastax.driver.core.exceptions.TruncateException;
import com.datastax.driver.core.exceptions.UnauthorizedException;
import com.datastax.driver.core.exceptions.UnavailableException;
import com.datastax.driver.core.exceptions.WriteTimeoutException;
import com.hmsonline.trident.cql.mappers.CqlRowMapper;
/**
* @param The generic state to back
* @author robertlee
*/
public class CassandraCqlMapState implements IBackingMap {
private static final Logger LOG = LoggerFactory.getLogger(CassandraCqlMapState.class);
@SuppressWarnings("serial")
public static class Options implements Serializable {
public int localCacheSize = 5000;
public String globalKey = "globalkey";
public String keyspace;
public String tableName;
public Integer ttl = 86400; // 1 day
public Type batchType = Type.LOGGED;
// Unique name of storm metrics. Must ne unique in topology
public String mapStateMetricName = this.toString();
}
/////////////////////////////////////////////
// Static Methods For Specific State Type StateFactory
/////////////////////////////////////////////
@SuppressWarnings("rawtypes")
public static StateFactory opaque(CqlRowMapper mapper) {
Options options = new Options();
return opaque(mapper, options);
}
@SuppressWarnings("rawtypes")
public static StateFactory opaque(CqlRowMapper mapper, Options opts) {
return new CassandraCqlMapStateFactory(mapper, StateType.OPAQUE, opts);
}
@SuppressWarnings("rawtypes")
public static StateFactory transactional(CqlRowMapper mapper) {
Options options = new Options();
return transactional(mapper, options);
}
@SuppressWarnings("rawtypes")
public static StateFactory transactional(CqlRowMapper mapper, Options opts) {
return new CassandraCqlMapStateFactory(mapper, StateType.TRANSACTIONAL, opts);
}
@SuppressWarnings("rawtypes")
public static StateFactory nonTransactional(CqlRowMapper mapper) {
Options © 2015 - 2025 Weber Informatics LLC | Privacy Policy