}
if (validateProperties(properties)) {
// Configuration
KinesisClientLibConfiguration kinesisClientLibConfiguration =
new KinesisClientLibConfigurator().getConfiguration(properties);
String executableName = properties.getProperty(PROP_EXECUTABLE_NAME);
ExecutorService executorService = getExecutorService(properties);
// Factory
MultiLangRecordProcessorFactory recordProcessorFactory =
new MultiLangRecordProcessorFactory(executableName, executorService);
// Daemon
MultiLangDaemon daemon =
new MultiLangDaemon(properties.getProperty(PROP_PROCESSING_LANGUAGE),
kinesisClientLibConfiguration, recordProcessorFactory, executorService);
LOG.info("Running " + kinesisClientLibConfiguration.getApplicationName() + " to process stream "
+ kinesisClientLibConfiguration.getStreamName() + " with executable " + executableName);
Future<Integer> future = executorService.submit(daemon);
try {
System.exit(future.get());
} catch (InterruptedException | ExecutionException e) {