Class OutboxCoreAutoConfiguration

  • All Implemented Interfaces:

    @AutoConfiguration()@AutoConfigurationPackage()@ConditionalOnBean(annotation = {EnableOutbox.class})@EnableConfigurationProperties(value = {OutboxProperties.class}) 
    public final class OutboxCoreAutoConfiguration
    
                        

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

    Author:

    Roland Beisel

    • Constructor Detail

      • OutboxCoreAutoConfiguration

        OutboxCoreAutoConfiguration()
    • 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 persistence
        properties - Configuration properties for outbox functionality
        clock - 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 records
        recordProcessor - Processor for handling individual records
        partitionCoordinator - Coordinator for partition assignments
        instanceRegistry - Registry for instance management
        retryPolicy - Policy for determining retry behavior
        properties - Configuration properties
        taskExecutor - TaskExecutor for parallel processing of aggregateIds
        clock - 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 beans
        outboxRecordRepository - Repository for persisting outbox records
        outboxEventSerializer - Serializer for event payloads
        outboxProperties - Configuration properties
        clock - Clock for timestamps
        Returns:

        OutboxEventMulticaster bean