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 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 Details

    • COMPLETED_SUFFIX

      protected static final String COMPLETED_SUFFIX
      See Also:
    • 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 Details

    • 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 Details

    • 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)