Class CassandraAggregationRepository
java.lang.Object
org.apache.camel.support.service.BaseService
org.apache.camel.support.service.ServiceSupport
org.apache.camel.processor.aggregate.cassandra.CassandraAggregationRepository
- All Implemented Interfaces:
AutoCloseable
,org.apache.camel.Service
,org.apache.camel.ShutdownableService
,org.apache.camel.spi.AggregationRepository
,org.apache.camel.spi.RecoverableAggregationRepository
,org.apache.camel.StatefulService
,org.apache.camel.SuspendableService
- Direct Known Subclasses:
NamedCassandraAggregationRepository
public class CassandraAggregationRepository
extends org.apache.camel.support.service.ServiceSupport
implements org.apache.camel.spi.RecoverableAggregationRepository
Implementation of
AggregationRepository
using Cassandra table to store exchanges. Advice: use
LeveledCompaction for this table and tune read/write consistency levels. Warning: Cassandra is not the best tool for
queuing use cases See: http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets-
Field Summary
Fields inherited from class org.apache.camel.support.service.BaseService
BUILT, FAILED, INITIALIZED, INITIALIZING, lock, NEW, SHUTDOWN, SHUTTING_DOWN, STARTED, STARTING, status, STOPPED, STOPPING, SUSPENDED, SUSPENDING
-
Constructor Summary
ConstructorsConstructorDescriptionCassandraAggregationRepository
(com.datastax.oss.driver.api.core.CqlSession session) -
Method Summary
Modifier and TypeMethodDescriptionorg.apache.camel.Exchange
Insert or update exchange in aggregation table.void
Remove exchange by Id from aggregation table.protected void
doStart()
protected void
doStop()
org.apache.camel.Exchange
Get exchange from aggregation table by aggregation key.getKeys()
Get aggregation exchangeIds from aggregation table.int
String[]
protected Object[]
getPKValues
(String key) Generate primary key values from aggregation key.Object[]
com.datastax.oss.driver.api.core.ConsistencyLevel
long
com.datastax.oss.driver.api.core.CqlSession
getTable()
getTtl()
com.datastax.oss.driver.api.core.ConsistencyLevel
protected void
boolean
boolean
org.apache.camel.Exchange
Get exchange by exchange ID.void
Remove exchange by aggregation key from aggregation table.scan
(org.apache.camel.CamelContext camelContext) Get exchange IDs to be recoveredprotected List<com.datastax.oss.driver.api.core.cql.Row>
void
setAllowSerializedHeaders
(boolean allowSerializedHeaders) void
setDeadLetterUri
(String deadLetterUri) void
setExchangeColumn
(String exchangeColumnName) void
setExchangeIdColumn
(String exchangeIdColumn) void
setMaximumRedeliveries
(int maximumRedeliveries) void
setPKColumns
(String... pkColumns) void
setPrefixPKValues
(Object... prefixPKValues) void
setReadConsistencyLevel
(com.datastax.oss.driver.api.core.ConsistencyLevel readConsistencyLevel) void
setRecoveryInterval
(long recoveryIntervalInMillis) void
setRecoveryInterval
(long interval, TimeUnit timeUnit) void
setRecoveryIntervalInMillis
(long recoveryIntervalInMillis) void
setSession
(com.datastax.oss.driver.api.core.CqlSession session) void
void
void
setUseRecovery
(boolean useRecovery) void
setWriteConsistencyLevel
(com.datastax.oss.driver.api.core.ConsistencyLevel writeConsistencyLevel) Methods inherited from class org.apache.camel.support.service.BaseService
build, doBuild, doFail, doInit, doLifecycleChange, doResume, doShutdown, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspend
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.camel.spi.RecoverableAggregationRepository
confirmWithResult
Methods inherited from interface org.apache.camel.Service
build, close, init, start, stop
Methods inherited from interface org.apache.camel.ShutdownableService
shutdown
Methods inherited from interface org.apache.camel.StatefulService
getStatus, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspending
Methods inherited from interface org.apache.camel.SuspendableService
isSuspended, resume, suspend
-
Constructor Details
-
CassandraAggregationRepository
public CassandraAggregationRepository() -
CassandraAggregationRepository
public CassandraAggregationRepository(com.datastax.oss.driver.api.core.CqlSession session)
-
-
Method Details
-
getPKValues
Generate primary key values from aggregation key. -
doStart
- Overrides:
doStart
in classorg.apache.camel.support.service.BaseService
- Throws:
Exception
-
doStop
- Overrides:
doStop
in classorg.apache.camel.support.service.BaseService
- Throws:
Exception
-
add
public org.apache.camel.Exchange add(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange exchange) Insert or update exchange in aggregation table.- Specified by:
add
in interfaceorg.apache.camel.spi.AggregationRepository
-
initSelectStatement
protected void initSelectStatement() -
get
Get exchange from aggregation table by aggregation key.- Specified by:
get
in interfaceorg.apache.camel.spi.AggregationRepository
-
confirm
Remove exchange by Id from aggregation table.- Specified by:
confirm
in interfaceorg.apache.camel.spi.AggregationRepository
-
remove
public void remove(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange exchange) Remove exchange by aggregation key from aggregation table.- Specified by:
remove
in interfaceorg.apache.camel.spi.AggregationRepository
-
selectKeyIds
-
getKeys
Get aggregation exchangeIds from aggregation table.- Specified by:
getKeys
in interfaceorg.apache.camel.spi.AggregationRepository
-
scan
Get exchange IDs to be recovered- Specified by:
scan
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
- Returns:
- Exchange IDs
-
recover
public org.apache.camel.Exchange recover(org.apache.camel.CamelContext camelContext, String exchangeId) Get exchange by exchange ID. This is far from optimal.- Specified by:
recover
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
getSession
public com.datastax.oss.driver.api.core.CqlSession getSession() -
setSession
public void setSession(com.datastax.oss.driver.api.core.CqlSession session) -
getTable
-
setTable
-
getPrefixPKValues
-
setPrefixPKValues
-
getPKColumns
-
setPKColumns
-
getExchangeIdColumn
-
setExchangeIdColumn
-
getWriteConsistencyLevel
public com.datastax.oss.driver.api.core.ConsistencyLevel getWriteConsistencyLevel() -
setWriteConsistencyLevel
public void setWriteConsistencyLevel(com.datastax.oss.driver.api.core.ConsistencyLevel writeConsistencyLevel) -
getReadConsistencyLevel
public com.datastax.oss.driver.api.core.ConsistencyLevel getReadConsistencyLevel() -
setReadConsistencyLevel
public void setReadConsistencyLevel(com.datastax.oss.driver.api.core.ConsistencyLevel readConsistencyLevel) -
getExchangeColumn
-
setExchangeColumn
-
getTtl
-
setTtl
-
getRecoveryIntervalInMillis
public long getRecoveryIntervalInMillis()- Specified by:
getRecoveryIntervalInMillis
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setRecoveryIntervalInMillis
public void setRecoveryIntervalInMillis(long recoveryIntervalInMillis) -
setRecoveryInterval
- Specified by:
setRecoveryInterval
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setRecoveryInterval
public void setRecoveryInterval(long recoveryIntervalInMillis) - Specified by:
setRecoveryInterval
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
isUseRecovery
public boolean isUseRecovery()- Specified by:
isUseRecovery
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setUseRecovery
public void setUseRecovery(boolean useRecovery) - Specified by:
setUseRecovery
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
getDeadLetterUri
- Specified by:
getDeadLetterUri
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setDeadLetterUri
- Specified by:
setDeadLetterUri
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
getMaximumRedeliveries
public int getMaximumRedeliveries()- Specified by:
getMaximumRedeliveries
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setMaximumRedeliveries
public void setMaximumRedeliveries(int maximumRedeliveries) - Specified by:
setMaximumRedeliveries
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
isAllowSerializedHeaders
public boolean isAllowSerializedHeaders() -
setAllowSerializedHeaders
public void setAllowSerializedHeaders(boolean allowSerializedHeaders)
-