Interface AggregationRepository
- All Known Subinterfaces:
OptimisticLockingAggregationRepository, RecoverableAggregationRepository
public interface AggregationRepository
Persistent store for in-progress aggregated
Exchange instances, used by the
Aggregator EIP.
The Aggregator EIP correlates incoming exchanges by a key and accumulates them until a completion condition is
satisfied. This repository is the pluggable storage layer that holds the partial aggregate between correlation
events. The lifecycle for each aggregate is:
get(CamelContext, String)— load the current partial aggregate (ornullif none exists yet).add(CamelContext, String, Exchange)— store the updated aggregate after applying theAggregationStrategy.remove(CamelContext, String, Exchange)— delete the aggregate once the completion condition fires.confirm(CamelContext, String)— acknowledge successful downstream processing of the completed aggregate (used by persistent stores to mark records as committed).
MemoryAggregationRepository) is suitable for non-persistent use cases;
persistent implementations backed by JDBC, Hazelcast, Infinispan, or file storage are available as separate Camel
components.-
Method Summary
Modifier and TypeMethodDescription@Nullable Exchangeadd(CamelContext camelContext, String key, Exchange exchange) Add the givenExchangeunder the correlation key.voidconfirm(CamelContext camelContext, String exchangeId) Confirms the completion of theExchange.@Nullable Exchangeget(CamelContext camelContext, String key) Gets the given exchange with the correlation keygetKeys()Gets the keys currently in the repository.voidremove(CamelContext camelContext, String key, Exchange exchange) Removes the exchange with the given correlation key, which should happen when anExchangeis completed
-
Method Details
-
add
Add the givenExchangeunder the correlation key. Will replace any existing exchange. Important: This method is not invoked if only one exchange was completed, and therefore the exchange does not need to be added to a repository, as its completed immediately.- Parameters:
camelContext- the current CamelContextkey- the correlation keyexchange- the aggregated exchange- Returns:
- the old exchange if any existed
-
get
Gets the given exchange with the correlation key This method is always invoked for any incoming exchange in the aggregator.- Parameters:
camelContext- the current CamelContextkey- the correlation key- Returns:
- the exchange, or null if no exchange was previously added
-
remove
Removes the exchange with the given correlation key, which should happen when anExchangeis completed Important: This method is not invoked if only one exchange was completed, and therefore the exchange does not need to be added to a repository, as its completed immediately.- Parameters:
camelContext- the current CamelContextkey- the correlation keyexchange- the exchange to remove
-
confirm
Confirms the completion of theExchange. This method is always invoked.- Parameters:
camelContext- the current CamelContextexchangeId- exchange id to confirm
-
getKeys
-