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

@Metadata(label="bean", description="Aggregation repository that uses Hazelcast Cache to store exchanges.", annotations="interfaceName=org.apache.camel.AggregationStrategy") @Configurer(metadataOnly=true) 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:
    • useLocalHzInstance

      protected boolean useLocalHzInstance
    • 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
    • mapName

      @Metadata(description="Name of cache to use", required=true) protected String mapName
    • hazelcastInstance

      @Metadata(description="To use an existing Hazelcast instance instead of local") protected com.hazelcast.core.HazelcastInstance hazelcastInstance
    • persistenceMapName

      @Metadata(label="advanced", description="Name of cache to use for completed exchanges") protected String persistenceMapName
    • optimistic

      @Metadata(description="Whether to use optimistic locking") protected boolean optimistic
    • useRecovery

      @Metadata(description="Whether or not recovery is enabled", defaultValue="true") protected boolean useRecovery
    • recoveryInterval

      @Metadata(description="Sets the interval between recovery scans", defaultValue="5000") protected long recoveryInterval
    • deadLetterUri

      @Metadata(description="Sets an optional dead letter channel which exhausted recovered Exchange should be send to.") protected String deadLetterUri
    • maximumRedeliveries

      @Metadata(description="Sets an optional limit of the number of redelivery attempt of recovered Exchange should be attempted, before its exhausted. When this limit is hit, then the Exchange is moved to the dead letter channel.", defaultValue="3") protected int maximumRedeliveries
    • allowSerializedHeaders

      @Metadata(label="advanced", description="Whether headers on the Exchange that are Java objects and Serializable should be included and saved to the repository") protected boolean allowSerializedHeaders
  • Constructor Details

    • HazelcastAggregationRepository

      public HazelcastAggregationRepository()
    • 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;
      persistentRepositoryName - IMap recoverable repository name;
      optimistic - whether to use optimistic locking manner;
      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
    • getRecoveryInterval

      public long getRecoveryInterval()
      Specified by:
      getRecoveryInterval 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)
    • getHazelcastInstance

      public com.hazelcast.core.HazelcastInstance getHazelcastInstance()
    • setHazelcastInstance

      public void setHazelcastInstance(com.hazelcast.core.HazelcastInstance hazelcastInstance)
    • 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)