Class OutboxCoreAutoConfiguration
-
- All Implemented Interfaces:
@AutoConfiguration()@AutoConfigurationPackage()@ConditionalOnBean(annotation = {EnableOutbox.class})@EnableConfigurationProperties(value = {OutboxProperties.class}) public final class OutboxCoreAutoConfigurationAuto-configuration class for Outbox core functionality.
This configuration is activated when the @EnableOutbox annotation is present and provides all necessary beans for the outbox pattern implementation.
- Since:
0.1.0
Roland Beisel
-
-
Constructor Summary
Constructors Constructor Description OutboxCoreAutoConfiguration()
-
Method Summary
Modifier and Type Method Description final Clockclock()Provides a default Clock bean if none is configured. final ThreadPoolTaskExecutoroutboxTaskExecutor(OutboxProperties properties)Provides a configurable ThreadPoolTaskExecutor for parallel processing of aggregateIds. final OutboxRetryPolicyretryPolicy(OutboxProperties properties)Creates a retry policy based on configuration properties. final OutboxInstanceRegistryoutboxInstanceRegistry(OutboxInstanceRepository instanceRepository, OutboxProperties properties, Clock clock)Creates the outbox instance registry for horizontal scaling. final PartitionCoordinatorpartitionCoordinator(OutboxInstanceRegistry instanceRegistry)Creates the partition coordinator for managing partition assignments. final OutboxProcessingSchedulerpartitionAwareOutboxProcessingScheduler(OutboxRecordRepository recordRepository, OutboxRecordProcessor recordProcessor, PartitionCoordinator partitionCoordinator, OutboxInstanceRegistry instanceRegistry, OutboxRetryPolicy retryPolicy, OutboxProperties properties, @Qualifier(value = "outboxTaskExecutor") TaskExecutor taskExecutor, Clock clock)Creates the partition-aware outbox processing scheduler. final OutboxEventMulticasteroutboxApplicationEventMulticaster(BeanFactory beanFactory, OutboxRecordRepository outboxRecordRepository, OutboxEventSerializer outboxEventSerializer, OutboxProperties outboxProperties, Clock clock)Creates the custom application event multicaster for @OutboxEvent handling. -
-
Method Detail
-
clock
@Bean()@ConditionalOnMissingBean() final Clock clock()
Provides a default Clock bean if none is configured.
- Returns:
System default zone clock
-
outboxTaskExecutor
@Bean()@ConditionalOnMissingBean(name = {"outboxTaskExecutor"}) final ThreadPoolTaskExecutor outboxTaskExecutor(OutboxProperties properties)Provides a configurable ThreadPoolTaskExecutor for parallel processing of aggregateIds.
The pool size can be configured via OutboxProperties. This executor is used by the OutboxProcessingScheduler to process multiple aggregateIds in parallel while maintaining strict ordering per aggregateId.
- Parameters:
properties- Outbox configuration properties- Returns:
Configured ThreadPoolTaskExecutor
-
retryPolicy
@Bean()@ConditionalOnMissingBean() final OutboxRetryPolicy retryPolicy(OutboxProperties properties)
Creates a retry policy based on configuration properties.
- Parameters:
properties- Outbox configuration properties- Returns:
Configured retry policy
-
outboxInstanceRegistry
@Bean()@ConditionalOnMissingBean() final OutboxInstanceRegistry outboxInstanceRegistry(OutboxInstanceRepository instanceRepository, OutboxProperties properties, Clock clock)
Creates the outbox instance registry for horizontal scaling.
- Parameters:
instanceRepository- Repository for instance persistenceproperties- Configuration properties for outbox functionalityclock- Clock for time operations- Returns:
OutboxInstanceRegistry bean
-
partitionCoordinator
@Bean()@ConditionalOnMissingBean() final PartitionCoordinator partitionCoordinator(OutboxInstanceRegistry instanceRegistry)
Creates the partition coordinator for managing partition assignments.
- Parameters:
instanceRegistry- Registry for managing instances- Returns:
PartitionCoordinator bean
-
partitionAwareOutboxProcessingScheduler
@Bean()@ConditionalOnMissingBean() final OutboxProcessingScheduler partitionAwareOutboxProcessingScheduler(OutboxRecordRepository recordRepository, OutboxRecordProcessor recordProcessor, PartitionCoordinator partitionCoordinator, OutboxInstanceRegistry instanceRegistry, OutboxRetryPolicy retryPolicy, OutboxProperties properties, @Qualifier(value = "outboxTaskExecutor") TaskExecutor taskExecutor, Clock clock)
Creates the partition-aware outbox processing scheduler.
- Parameters:
recordRepository- Repository for accessing outbox recordsrecordProcessor- Processor for handling individual recordspartitionCoordinator- Coordinator for partition assignmentsinstanceRegistry- Registry for instance managementretryPolicy- Policy for determining retry behaviorproperties- Configuration propertiestaskExecutor- TaskExecutor for parallel processing of aggregateIdsclock- Clock for time-based operations- Returns:
PartitionAwareOutboxProcessingScheduler bean
-
outboxApplicationEventMulticaster
@Bean(name = {"applicationEventMulticaster"})@ConditionalOnMissingBean() final OutboxEventMulticaster outboxApplicationEventMulticaster(BeanFactory beanFactory, OutboxRecordRepository outboxRecordRepository, OutboxEventSerializer outboxEventSerializer, OutboxProperties outboxProperties, Clock clock)Creates the custom application event multicaster for @OutboxEvent handling.
- Parameters:
beanFactory- Factory for creating nested beansoutboxRecordRepository- Repository for persisting outbox recordsoutboxEventSerializer- Serializer for event payloadsoutboxProperties- Configuration propertiesclock- Clock for timestamps- Returns:
OutboxEventMulticaster bean
-
-
-
-