Class 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 implementing RecoverableAggregationRepository and OptimisticLockingAggregationRepository. 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 are IMap <String, Exchange>. However HazelcastAggregationRepository can run it's own Hazelcast instance, but obviously no benefits of Hazelcast clustering are gained this way. If the HazelcastAggregationRepository uses it's own local HazelcastInstance it will DESTROY this instance on doStop(). You should control HazelcastInstance lifecycle yourself whenever you instantiate HazelcastAggregationRepository passing a reference to the instance.
    • Field Detail

      • 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 new HazelcastAggregationRepository that defaults to non-optimistic locking with recoverable behavior and a local Hazelcast instance. Recoverable repository name defaults to repositoryName + "-compeleted".
        Parameters:
        repositoryName - IMap repository name;
      • HazelcastAggregationRepository

        public HazelcastAggregationRepository​(String repositoryName,
                                              String persistentRepositoryName)
        Creates new HazelcastAggregationRepository 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 new HazelcastAggregationRepository with recoverable behavior and a local Hazelcast instance. Recoverable repository name defaults to repositoryName + "-compeleted".
        Parameters:
        repositoryName - IMap repository name;
        optimistic - whether to use optimistic locking manner.
      • HazelcastAggregationRepository

        public HazelcastAggregationRepository​(String repositoryName,
                                              String persistentRepositoryName,
                                              boolean optimistic)
        Creates new HazelcastAggregationRepository 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 new HazelcastAggregationRepository that defaults to non-optimistic locking with recoverable behavior. Recoverable repository name defaults to repositoryName + "-compeleted".
        Parameters:
        repositoryName - IMap repository name;
        hzInstanse - externally configured HazelcastInstance.
      • HazelcastAggregationRepository

        public HazelcastAggregationRepository​(String repositoryName,
                                              String persistentRepositoryName,
                                              com.hazelcast.core.HazelcastInstance hzInstanse)
        Creates new HazelcastAggregationRepository that defaults to non-optimistic locking with recoverable behavior.
        Parameters:
        repositoryName - IMap repository name;
        persistentRepositoryName - IMap recoverable repository name;
        hzInstanse - externally configured HazelcastInstance.
      • HazelcastAggregationRepository

        public HazelcastAggregationRepository​(String repositoryName,
                                              boolean optimistic,
                                              com.hazelcast.core.HazelcastInstance hzInstance)
        Creates new HazelcastAggregationRepository with recoverable behavior. Recoverable repository name defaults to repositoryName + "-compeleted".
        Parameters:
        repositoryName - IMap repository name;
        optimistic - whether to use optimistic locking manner;
        hzInstance - externally configured HazelcastInstance.
      • HazelcastAggregationRepository

        public HazelcastAggregationRepository​(String repositoryName,
                                              String persistentRepositoryName,
                                              boolean optimistic,
                                              com.hazelcast.core.HazelcastInstance hzInstance)
        Creates new HazelcastAggregationRepository with recoverable behavior.
        Parameters:
        repositoryName - IMap repository name;
        optimistic - whether to use optimistic locking manner;
        persistentRepositoryName - IMap recoverable repository name;
        hzInstance - externally configured HazelcastInstance.
    • 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 interface org.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 interface org.apache.camel.spi.AggregationRepository
      • scan

        public Set<String> scan​(org.apache.camel.CamelContext camelContext)
        Specified by:
        scan in interface org.apache.camel.spi.RecoverableAggregationRepository
      • recover

        public org.apache.camel.Exchange recover​(org.apache.camel.CamelContext camelContext,
                                                 String exchangeId)
        Specified by:
        recover in interface org.apache.camel.spi.RecoverableAggregationRepository
      • setRecoveryInterval

        public void setRecoveryInterval​(long interval,
                                        TimeUnit timeUnit)
        Specified by:
        setRecoveryInterval in interface org.apache.camel.spi.RecoverableAggregationRepository
      • setRecoveryInterval

        public void setRecoveryInterval​(long interval)
        Specified by:
        setRecoveryInterval in interface org.apache.camel.spi.RecoverableAggregationRepository
      • getRecoveryIntervalInMillis

        public long getRecoveryIntervalInMillis()
        Specified by:
        getRecoveryIntervalInMillis in interface org.apache.camel.spi.RecoverableAggregationRepository
      • setUseRecovery

        public void setUseRecovery​(boolean useRecovery)
        Specified by:
        setUseRecovery in interface org.apache.camel.spi.RecoverableAggregationRepository
      • isUseRecovery

        public boolean isUseRecovery()
        Specified by:
        isUseRecovery in interface org.apache.camel.spi.RecoverableAggregationRepository
      • setDeadLetterUri

        public void setDeadLetterUri​(String deadLetterUri)
        Specified by:
        setDeadLetterUri in interface org.apache.camel.spi.RecoverableAggregationRepository
      • getDeadLetterUri

        public String getDeadLetterUri()
        Specified by:
        getDeadLetterUri in interface org.apache.camel.spi.RecoverableAggregationRepository
      • setMaximumRedeliveries

        public void setMaximumRedeliveries​(int maximumRedeliveries)
        Specified by:
        setMaximumRedeliveries in interface org.apache.camel.spi.RecoverableAggregationRepository
      • getMaximumRedeliveries

        public int getMaximumRedeliveries()
        Specified by:
        getMaximumRedeliveries in interface org.apache.camel.spi.RecoverableAggregationRepository
      • get

        public org.apache.camel.Exchange get​(org.apache.camel.CamelContext camelContext,
                                             String key)
        Specified by:
        get in interface org.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 the exchange from the operational storage and moving it into the persistent one if the HazelcastAggregationRepository runs in recoverable mode and optimistic is false. It will act at your own risk otherwise.
        Specified by:
        remove in interface org.apache.camel.spi.AggregationRepository
        Specified by:
        remove in interface org.apache.camel.spi.OptimisticLockingAggregationRepository
        Parameters:
        camelContext - the current CamelContext
        key - the correlation key
        exchange - the exchange to remove
      • confirm

        public void confirm​(org.apache.camel.CamelContext camelContext,
                            String exchangeId)
        Specified by:
        confirm in interface org.apache.camel.spi.AggregationRepository
      • getKeys

        public Set<String> getKeys()
        Specified by:
        getKeys in interface org.apache.camel.spi.AggregationRepository
      • getPersistentRepositoryName

        public String getPersistentRepositoryName()
        Returns:
        Persistent repository IMap name;
      • doStart

        protected void doStart()
                        throws Exception
        Overrides:
        doStart in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • doStop

        protected void doStop()
                       throws Exception
        Overrides:
        doStop in class org.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)