@ Override public void start ( ) { if ( layout == null ) { initializationFailed = true ; addError ( "Invalid configuration - No layout for appender: " + name ) ; return ; } if ( streamName == null ) { initializationFailed = true ; addError ( "Invalid configuration - streamName cannot be null for appender: " + name ) ; return ; } ClientConfiguration clientConfiguration = new ClientConfiguration ( ) ; clientConfiguration . setMaxErrorRetry ( maxRetries ) ; clientConfiguration . setRetryPolicy ( new RetryPolicy ( PredefinedRetryPolicies . DEFAULT_RETRY_CONDITION , PredefinedRetryPolicies . DEFAULT_BACKOFF_STRATEGY , maxRetries , true ) ) ; clientConfiguration . setUserAgent ( AppenderConstants . USER_AGENT_STRING ) ; BlockingQueue < Runnable > taskBuffer = new LinkedBlockingDeque < Runnable > ( bufferSize ) ; threadPoolExecutor = new ThreadPoolExecutor ( threadCount , threadCount , AppenderConstants . DEFAULT_THREAD_KEEP_ALIVE_SEC , TimeUnit . SECONDS , taskBuffer , setupThreadFactory ( ) , new BlockFastProducerPolicy ( ) ) ; threadPoolExecutor . prestartAllCoreThreads ( ) ; this . client = createClient ( credentials , clientConfiguration , threadPoolExecutor ) ; client . setRegion ( findRegion ( ) ) ; if ( ! Validator . isBlank ( endpoint ) ) { if ( ! Validator . isBlank ( region ) ) { addError ( "Received configuration for both region as well as Amazon Kinesis endpoint. (" + endpoint + ") will be used as endpoint instead of default endpoint for region (" + region + ")" ) ; } client . setEndpoint ( endpoint ) ; } validateStreamName ( client , streamName ) ; super . start ( ) ; }
Configures appender instance and makes it ready for use by the consumers . It validates mandatory parameters and confirms if the configured stream is ready for publishing data yet .