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 ofAggregationRepository
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
-
-
Constructor Summary
Constructors Constructor Description CassandraAggregationRepository()
CassandraAggregationRepository(com.datastax.oss.driver.api.core.CqlSession session)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.apache.camel.Exchange
add(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange exchange)
Insert or update exchange in aggregation table.void
confirm(org.apache.camel.CamelContext camelContext, String exchangeId)
Remove exchange by Id from aggregation table.protected void
doStart()
protected void
doStop()
org.apache.camel.Exchange
get(org.apache.camel.CamelContext camelContext, String key)
Get exchange from aggregation table by aggregation key.String
getDeadLetterUri()
String
getExchangeColumn()
String
getExchangeIdColumn()
Set<String>
getKeys()
Get aggregation exchangeIds from aggregation table.int
getMaximumRedeliveries()
String[]
getPKColumns()
protected Object[]
getPKValues(String key)
Generate primary key values from aggregation key.Object[]
getPrefixPKValues()
com.datastax.oss.driver.api.core.ConsistencyLevel
getReadConsistencyLevel()
long
getRecoveryIntervalInMillis()
com.datastax.oss.driver.api.core.CqlSession
getSession()
String
getTable()
Integer
getTtl()
com.datastax.oss.driver.api.core.ConsistencyLevel
getWriteConsistencyLevel()
protected void
initSelectStatement()
boolean
isAllowSerializedHeaders()
boolean
isUseRecovery()
org.apache.camel.Exchange
recover(org.apache.camel.CamelContext camelContext, String exchangeId)
Get exchange by exchange ID.void
remove(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange exchange)
Remove exchange by aggregation key from aggregation table.Set<String>
scan(org.apache.camel.CamelContext camelContext)
Get exchange IDs to be recoveredprotected List<com.datastax.oss.driver.api.core.cql.Row>
selectKeyIds()
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
setTable(String table)
void
setTtl(Integer ttl)
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
-
-
-
-
Method Detail
-
getPKValues
protected Object[] getPKValues(String key)
Generate primary key values from aggregation key.
-
doStart
protected void doStart() throws Exception
- Overrides:
doStart
in classorg.apache.camel.support.service.BaseService
- Throws:
Exception
-
doStop
protected void doStop() throws Exception
- 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
public org.apache.camel.Exchange get(org.apache.camel.CamelContext camelContext, String key)
Get exchange from aggregation table by aggregation key.- Specified by:
get
in interfaceorg.apache.camel.spi.AggregationRepository
-
confirm
public void confirm(org.apache.camel.CamelContext camelContext, String exchangeId)
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
protected List<com.datastax.oss.driver.api.core.cql.Row> selectKeyIds()
-
getKeys
public Set<String> getKeys()
Get aggregation exchangeIds from aggregation table.- Specified by:
getKeys
in interfaceorg.apache.camel.spi.AggregationRepository
-
scan
public Set<String> scan(org.apache.camel.CamelContext camelContext)
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
public String getTable()
-
setTable
public void setTable(String table)
-
getPrefixPKValues
public Object[] getPrefixPKValues()
-
setPrefixPKValues
public void setPrefixPKValues(Object... prefixPKValues)
-
getPKColumns
public String[] getPKColumns()
-
setPKColumns
public void setPKColumns(String... pkColumns)
-
getExchangeIdColumn
public String getExchangeIdColumn()
-
setExchangeIdColumn
public void setExchangeIdColumn(String exchangeIdColumn)
-
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
public String getExchangeColumn()
-
setExchangeColumn
public void setExchangeColumn(String exchangeColumnName)
-
getTtl
public Integer getTtl()
-
setTtl
public void setTtl(Integer ttl)
-
getRecoveryIntervalInMillis
public long getRecoveryIntervalInMillis()
- Specified by:
getRecoveryIntervalInMillis
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setRecoveryIntervalInMillis
public void setRecoveryIntervalInMillis(long recoveryIntervalInMillis)
-
setRecoveryInterval
public void setRecoveryInterval(long interval, TimeUnit timeUnit)
- 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
public String getDeadLetterUri()
- Specified by:
getDeadLetterUri
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setDeadLetterUri
public void setDeadLetterUri(String deadLetterUri)
- 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)
-
-