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.OptimisticLockingAggregationRepository
A Hazelcast-based AggregationRepository implementingRecoverableAggregationRepository
andOptimisticLockingAggregationRepository
. 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 theHazelcastAggregationRepository
uses it's own localHazelcastInstance
it will DESTROY this instance ondoStop()
. You should controlHazelcastInstance
lifecycle yourself whenever you instantiateHazelcastAggregationRepository
passing a reference to the instance.
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
allowSerializedHeaders
protected com.hazelcast.map.IMap<String,org.apache.camel.support.DefaultExchangeHolder>
cache
protected static String
COMPLETED_SUFFIX
protected String
deadLetterChannel
protected com.hazelcast.core.HazelcastInstance
hzInstance
protected String
mapName
protected int
maximumRedeliveries
protected boolean
optimistic
protected com.hazelcast.map.IMap<String,org.apache.camel.support.DefaultExchangeHolder>
persistedCache
protected String
persistenceMapName
protected long
recoveryInterval
protected boolean
useLocalHzInstance
protected boolean
useRecovery
-
Constructor Summary
Constructors Constructor Description HazelcastAggregationRepository(String repositoryName)
Creates newHazelcastAggregationRepository
that defaults to non-optimistic locking with recoverable behavior and a local Hazelcast instance.HazelcastAggregationRepository(String repositoryName, boolean optimistic)
Creates newHazelcastAggregationRepository
with recoverable behavior and a local Hazelcast instance.HazelcastAggregationRepository(String repositoryName, boolean optimistic, com.hazelcast.core.HazelcastInstance hzInstance)
Creates newHazelcastAggregationRepository
with recoverable behavior.HazelcastAggregationRepository(String repositoryName, com.hazelcast.core.HazelcastInstance hzInstanse)
Creates newHazelcastAggregationRepository
that defaults to non-optimistic locking with recoverable behavior.HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName)
Creates newHazelcastAggregationRepository
that defaults to non-optimistic locking with recoverable behavior and a local Hazelcast instance.HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, boolean optimistic)
Creates newHazelcastAggregationRepository
with recoverable behavior and a local Hazelcast instance.HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, boolean optimistic, com.hazelcast.core.HazelcastInstance hzInstance)
Creates newHazelcastAggregationRepository
with recoverable behavior.HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, com.hazelcast.core.HazelcastInstance hzInstanse)
Creates newHazelcastAggregationRepository
that defaults to non-optimistic locking with recoverable behavior.
-
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)
org.apache.camel.Exchange
add(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange oldExchange, org.apache.camel.Exchange newExchange)
void
confirm(org.apache.camel.CamelContext camelContext, String exchangeId)
boolean
containsKey(Object key)
Checks if the key in question is in the repository.protected void
doStart()
protected void
doStop()
org.apache.camel.Exchange
get(org.apache.camel.CamelContext camelContext, String key)
String
getDeadLetterUri()
Set<String>
getKeys()
int
getMaximumRedeliveries()
String
getPersistentRepositoryName()
long
getRecoveryIntervalInMillis()
boolean
isAllowSerializedHeaders()
boolean
isUseRecovery()
org.apache.camel.Exchange
recover(org.apache.camel.CamelContext camelContext, String exchangeId)
void
remove(org.apache.camel.CamelContext camelContext, String key, org.apache.camel.Exchange exchange)
This method performs transactional operation on removing theexchange
from the operational storage and moving it into the persistent one if theHazelcastAggregationRepository
runs in recoverable mode andoptimistic
is false.Set<String>
scan(org.apache.camel.CamelContext camelContext)
void
setAllowSerializedHeaders(boolean allowSerializedHeaders)
void
setDeadLetterUri(String deadLetterUri)
void
setMaximumRedeliveries(int maximumRedeliveries)
void
setRecoveryInterval(long interval)
void
setRecoveryInterval(long interval, TimeUnit timeUnit)
void
setUseRecovery(boolean useRecovery)
protected org.apache.camel.Exchange
unmarshallExchange(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 newHazelcastAggregationRepository
that defaults to non-optimistic locking with recoverable behavior and a local Hazelcast instance. Recoverable repository name defaults torepositoryName
+ "-compeleted".- Parameters:
repositoryName
-IMap
repository name;
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName)
Creates newHazelcastAggregationRepository
that defaults to non-optimistic locking with recoverable behavior and a local Hazelcast instance.- Parameters:
repositoryName
-IMap
repository name;persistentRepositoryName
-IMap
recoverable repository name;
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, boolean optimistic)
Creates newHazelcastAggregationRepository
with recoverable behavior and a local Hazelcast instance. Recoverable repository name defaults torepositoryName
+ "-compeleted".- Parameters:
repositoryName
-IMap
repository name;optimistic
- whether to use optimistic locking manner.
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, boolean optimistic)
Creates newHazelcastAggregationRepository
with recoverable behavior and a local Hazelcast instance.- Parameters:
repositoryName
-IMap
repository name;persistentRepositoryName
-IMap
recoverable repository name;optimistic
- whether to use optimistic locking manner.
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, com.hazelcast.core.HazelcastInstance hzInstanse)
Creates newHazelcastAggregationRepository
that defaults to non-optimistic locking with recoverable behavior. Recoverable repository name defaults torepositoryName
+ "-compeleted".- Parameters:
repositoryName
-IMap
repository name;hzInstanse
- externally configuredHazelcastInstance
.
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, String persistentRepositoryName, com.hazelcast.core.HazelcastInstance hzInstanse)
Creates newHazelcastAggregationRepository
that defaults to non-optimistic locking with recoverable behavior.- Parameters:
repositoryName
-IMap
repository name;persistentRepositoryName
-IMap
recoverable repository name;hzInstanse
- externally configuredHazelcastInstance
.
-
HazelcastAggregationRepository
public HazelcastAggregationRepository(String repositoryName, boolean optimistic, com.hazelcast.core.HazelcastInstance hzInstance)
Creates newHazelcastAggregationRepository
with recoverable behavior. Recoverable repository name defaults torepositoryName
+ "-compeleted".- Parameters:
repositoryName
-IMap
repository 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 newHazelcastAggregationRepository
with recoverable behavior.- Parameters:
repositoryName
-IMap
repository name;optimistic
- whether to use optimistic locking manner;persistentRepositoryName
-IMap
recoverable 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:
add
in 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:
add
in interfaceorg.apache.camel.spi.AggregationRepository
-
scan
public Set<String> scan(org.apache.camel.CamelContext camelContext)
- Specified by:
scan
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
recover
public org.apache.camel.Exchange recover(org.apache.camel.CamelContext camelContext, String exchangeId)
- Specified by:
recover
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setRecoveryInterval
public void setRecoveryInterval(long interval, TimeUnit timeUnit)
- Specified by:
setRecoveryInterval
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setRecoveryInterval
public void setRecoveryInterval(long interval)
- Specified by:
setRecoveryInterval
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
getRecoveryIntervalInMillis
public long getRecoveryIntervalInMillis()
- Specified by:
getRecoveryIntervalInMillis
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setUseRecovery
public void setUseRecovery(boolean useRecovery)
- Specified by:
setUseRecovery
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
isUseRecovery
public boolean isUseRecovery()
- Specified by:
isUseRecovery
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setDeadLetterUri
public void setDeadLetterUri(String deadLetterUri)
- Specified by:
setDeadLetterUri
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
getDeadLetterUri
public String getDeadLetterUri()
- Specified by:
getDeadLetterUri
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
setMaximumRedeliveries
public void setMaximumRedeliveries(int maximumRedeliveries)
- Specified by:
setMaximumRedeliveries
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
getMaximumRedeliveries
public int getMaximumRedeliveries()
- Specified by:
getMaximumRedeliveries
in interfaceorg.apache.camel.spi.RecoverableAggregationRepository
-
get
public org.apache.camel.Exchange get(org.apache.camel.CamelContext camelContext, String key)
- Specified by:
get
in 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 theexchange
from the operational storage and moving it into the persistent one if theHazelcastAggregationRepository
runs in recoverable mode andoptimistic
is false. It will act at your own risk otherwise.- Specified by:
remove
in interfaceorg.apache.camel.spi.AggregationRepository
- Specified by:
remove
in 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:
confirm
in interfaceorg.apache.camel.spi.AggregationRepository
-
getKeys
public Set<String> getKeys()
- Specified by:
getKeys
in interfaceorg.apache.camel.spi.AggregationRepository
-
getPersistentRepositoryName
public String getPersistentRepositoryName()
- Returns:
- Persistent repository
IMap
name;
-
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
-
unmarshallExchange
protected org.apache.camel.Exchange unmarshallExchange(org.apache.camel.CamelContext camelContext, org.apache.camel.support.DefaultExchangeHolder holder)
-
-