Class HazelcastAggregationRepository
- java.lang.Object
-
- org.apache.camel.support.service.BaseService
-
- org.apache.camel.support.service.ServiceSupport
-
- org.apache.camel.processor.aggregate.hazelcast.HazelcastAggregationRepository
-
- All Implemented Interfaces:
AutoCloseable,org.apache.camel.Service,org.apache.camel.ShutdownableService,org.apache.camel.spi.AggregationRepository,org.apache.camel.spi.OptimisticLockingAggregationRepository,org.apache.camel.spi.RecoverableAggregationRepository,org.apache.camel.StatefulService,org.apache.camel.SuspendableService
- Direct Known Subclasses:
ReplicatedHazelcastAggregationRepository
public class HazelcastAggregationRepository extends org.apache.camel.support.service.ServiceSupport implements org.apache.camel.spi.RecoverableAggregationRepository, org.apache.camel.spi.OptimisticLockingAggregationRepositoryA Hazelcast-based AggregationRepository implementingRecoverableAggregationRepositoryandOptimisticLockingAggregationRepository. Defaults to thread-safe (non-optimistic) locking and recoverable strategy. Hazelcast settings are given to an end-user and can be controlled with repositoryName and persistentRespositoryName, both areIMap<String, Exchange>. However HazelcastAggregationRepository can run it's own Hazelcast instance, but obviously no benefits of Hazelcast clustering are gained this way. If theHazelcastAggregationRepositoryuses it's own localHazelcastInstanceit will DESTROY this instance ondoStop(). You should controlHazelcastInstancelifecycle yourself whenever you instantiateHazelcastAggregationRepositorypassing a reference to the instance.
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanallowSerializedHeadersprotected com.hazelcast.map.IMap<String,org.apache.camel.support.DefaultExchangeHolder>cacheprotected static StringCOMPLETED_SUFFIXprotected StringdeadLetterChannelprotected com.hazelcast.core.HazelcastInstancehzInstanceprotected StringmapNameprotected intmaximumRedeliveriesprotected booleanoptimisticprotected com.hazelcast.map.IMap<String,org.apache.camel.support.DefaultExchangeHolder>persistedCacheprotected StringpersistenceMapNameprotected longrecoveryIntervalprotected booleanuseLocalHzInstanceprotected booleanuseRecovery
-
Constructor Summary
Constructors Constructor Description HazelcastAggregationRepository(String repositoryName)Creates newHazelcastAggregationRepositorythat defaults to non-optimistic locking with recoverable behavior and a local Hazelcast instance.HazelcastAggregationRepository(String repositoryName, boolean optimistic)Creates newHazelcastAggregationRepositorywith recoverable behavior and a local Hazelcast instance.HazelcastAggregationRepository(String repositoryName, boolean optimistic, com.hazelcast.core.HazelcastInstance hzInstance)Creates newHazelcastAggregationRepositorywith recoverable behavior.HazelcastAggregationRepository(String repositoryName, com.hazelcast.core.HazelcastInstance hzInstanse)Creates newHazelcastAggregationRepositorythat defaults to non-optimistic locking with recoverable behavior.HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName)Creates newHazelcastAggregationRepositorythat defaults to non-optimistic locking with recoverable behavior and a local Hazelcast instance.HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, boolean optimistic)Creates newHazelcastAggregationRepositorywith recoverable behavior and a local Hazelcast instance.HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, boolean optimistic, com.hazelcast.core.HazelcastInstance hzInstance)Creates newHazelcastAggregationRepositorywith recoverable behavior.HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, com.hazelcast.core.HazelcastInstance hzInstanse)Creates newHazelcastAggregationRepositorythat defaults to non-optimistic locking with recoverable behavior.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.apache.camel.Exchangeadd(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange exchange)org.apache.camel.Exchangeadd(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange oldExchange, org.apache.camel.Exchange newExchange)voidconfirm(org.apache.camel.CamelContext camelContext, String exchangeId)booleancontainsKey(Object key)Checks if the key in question is in the repository.protected voiddoStart()protected voiddoStop()org.apache.camel.Exchangeget(org.apache.camel.CamelContext camelContext, String key)StringgetDeadLetterUri()Set<String>getKeys()intgetMaximumRedeliveries()StringgetPersistentRepositoryName()longgetRecoveryIntervalInMillis()booleanisAllowSerializedHeaders()booleanisUseRecovery()org.apache.camel.Exchangerecover(org.apache.camel.CamelContext camelContext, String exchangeId)voidremove(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange exchange)This method performs transactional operation on removing theexchangefrom the operational storage and moving it into the persistent one if theHazelcastAggregationRepositoryruns in recoverable mode andoptimisticis false.Set<String>scan(org.apache.camel.CamelContext camelContext)voidsetAllowSerializedHeaders(boolean allowSerializedHeaders)voidsetDeadLetterUri(String deadLetterUri)voidsetMaximumRedeliveries(int maximumRedeliveries)voidsetRecoveryInterval(long interval)voidsetRecoveryInterval(long interval, TimeUnit timeUnit)voidsetUseRecovery(boolean useRecovery)protected org.apache.camel.ExchangeunmarshallExchange(org.apache.camel.CamelContext camelContext, org.apache.camel.support.DefaultExchangeHolder holder)-
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
-
-
-
-
Field Detail
-
COMPLETED_SUFFIX
protected static final String COMPLETED_SUFFIX
- See Also:
- Constant Field Values
-
optimistic
protected boolean optimistic
-
useLocalHzInstance
protected boolean useLocalHzInstance
-
useRecovery
protected boolean useRecovery
-
cache
protected com.hazelcast.map.IMap<String,org.apache.camel.support.DefaultExchangeHolder> cache
-
persistedCache
protected com.hazelcast.map.IMap<String,org.apache.camel.support.DefaultExchangeHolder> persistedCache
-
hzInstance
protected com.hazelcast.core.HazelcastInstance hzInstance
-
mapName
protected String mapName
-
persistenceMapName
protected String persistenceMapName
-
deadLetterChannel
protected String deadLetterChannel
-
recoveryInterval
protected long recoveryInterval
-
maximumRedeliveries
protected int maximumRedeliveries
-
allowSerializedHeaders
protected boolean allowSerializedHeaders
-
-
Constructor Detail
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName)
Creates newHazelcastAggregationRepositorythat defaults to non-optimistic locking with recoverable behavior and a local Hazelcast instance. Recoverable repository name defaults torepositoryName+ "-compeleted".- Parameters:
repositoryName-IMaprepository name;
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName)
Creates newHazelcastAggregationRepositorythat defaults to non-optimistic locking with recoverable behavior and a local Hazelcast instance.- Parameters:
repositoryName-IMaprepository name;persistentRepositoryName-IMaprecoverable repository name;
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, boolean optimistic)
Creates newHazelcastAggregationRepositorywith recoverable behavior and a local Hazelcast instance. Recoverable repository name defaults torepositoryName+ "-compeleted".- Parameters:
repositoryName-IMaprepository name;optimistic- whether to use optimistic locking manner.
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, boolean optimistic)
Creates newHazelcastAggregationRepositorywith recoverable behavior and a local Hazelcast instance.- Parameters:
repositoryName-IMaprepository name;persistentRepositoryName-IMaprecoverable repository name;optimistic- whether to use optimistic locking manner.
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, com.hazelcast.core.HazelcastInstance hzInstanse)
Creates newHazelcastAggregationRepositorythat defaults to non-optimistic locking with recoverable behavior. Recoverable repository name defaults torepositoryName+ "-compeleted".- Parameters:
repositoryName-IMaprepository name;hzInstanse- externally configuredHazelcastInstance.
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, com.hazelcast.core.HazelcastInstance hzInstanse)
Creates newHazelcastAggregationRepositorythat defaults to non-optimistic locking with recoverable behavior.- Parameters:
repositoryName-IMaprepository name;persistentRepositoryName-IMaprecoverable repository name;hzInstanse- externally configuredHazelcastInstance.
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, boolean optimistic, com.hazelcast.core.HazelcastInstance hzInstance)
Creates newHazelcastAggregationRepositorywith recoverable behavior. Recoverable repository name defaults torepositoryName+ "-compeleted".- Parameters:
repositoryName-IMaprepository name;optimistic- whether to use optimistic locking manner;hzInstance- externally configuredHazelcastInstance.
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, boolean optimistic, com.hazelcast.core.HazelcastInstance hzInstance)
Creates newHazelcastAggregationRepositorywith recoverable behavior.- Parameters:
repositoryName-IMaprepository name;optimistic- whether to use optimistic locking manner;persistentRepositoryName-IMaprecoverable repository name;hzInstance- externally configuredHazelcastInstance.
-
-
Method Detail
-
add
public org.apache.camel.Exchange add(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange oldExchange, org.apache.camel.Exchange newExchange) throws org.apache.camel.spi.OptimisticLockingAggregationRepository.OptimisticLockingException- Specified by:
addin interfaceorg.apache.camel.spi.OptimisticLockingAggregationRepository- Throws:
org.apache.camel.spi.OptimisticLockingAggregationRepository.OptimisticLockingException
-
add
public org.apache.camel.Exchange add(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange exchange)- Specified by:
addin interfaceorg.apache.camel.spi.AggregationRepository
-
scan
public Set<String> scan(org.apache.camel.CamelContext camelContext)
- Specified by:
scanin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
recover
public org.apache.camel.Exchange recover(org.apache.camel.CamelContext camelContext, String exchangeId)- Specified by:
recoverin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setRecoveryInterval
public void setRecoveryInterval(long interval, TimeUnit timeUnit)- Specified by:
setRecoveryIntervalin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setRecoveryInterval
public void setRecoveryInterval(long interval)
- Specified by:
setRecoveryIntervalin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
getRecoveryIntervalInMillis
public long getRecoveryIntervalInMillis()
- Specified by:
getRecoveryIntervalInMillisin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setUseRecovery
public void setUseRecovery(boolean useRecovery)
- Specified by:
setUseRecoveryin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
isUseRecovery
public boolean isUseRecovery()
- Specified by:
isUseRecoveryin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setDeadLetterUri
public void setDeadLetterUri(String deadLetterUri)
- Specified by:
setDeadLetterUriin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
getDeadLetterUri
public String getDeadLetterUri()
- Specified by:
getDeadLetterUriin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setMaximumRedeliveries
public void setMaximumRedeliveries(int maximumRedeliveries)
- Specified by:
setMaximumRedeliveriesin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
getMaximumRedeliveries
public int getMaximumRedeliveries()
- Specified by:
getMaximumRedeliveriesin interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
get
public org.apache.camel.Exchange get(org.apache.camel.CamelContext camelContext, String key)- Specified by:
getin interfaceorg.apache.camel.spi.AggregationRepository
-
containsKey
public boolean containsKey(Object key)
Checks if the key in question is in the repository.- Parameters:
key- Object - key in question
-
isAllowSerializedHeaders
public boolean isAllowSerializedHeaders()
-
setAllowSerializedHeaders
public void setAllowSerializedHeaders(boolean allowSerializedHeaders)
-
remove
public void remove(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange exchange)This method performs transactional operation on removing theexchangefrom the operational storage and moving it into the persistent one if theHazelcastAggregationRepositoryruns in recoverable mode andoptimisticis false. It will act at your own risk otherwise.- Specified by:
removein interfaceorg.apache.camel.spi.AggregationRepository- Specified by:
removein interfaceorg.apache.camel.spi.OptimisticLockingAggregationRepository- Parameters:
camelContext- the current CamelContextkey- the correlation keyexchange- the exchange to remove
-
confirm
public void confirm(org.apache.camel.CamelContext camelContext, String exchangeId)- Specified by:
confirmin interfaceorg.apache.camel.spi.AggregationRepository
-
getKeys
public Set<String> getKeys()
- Specified by:
getKeysin interfaceorg.apache.camel.spi.AggregationRepository
-
getPersistentRepositoryName
public String getPersistentRepositoryName()
- Returns:
- Persistent repository
IMapname;
-
doStart
protected void doStart() throws Exception- Overrides:
doStartin classorg.apache.camel.support.service.BaseService- Throws:
Exception
-
doStop
protected void doStop() throws Exception- Overrides:
doStopin classorg.apache.camel.support.service.BaseService- Throws:
Exception
-
unmarshallExchange
protected org.apache.camel.Exchange unmarshallExchange(org.apache.camel.CamelContext camelContext, org.apache.camel.support.DefaultExchangeHolder holder)
-
-