Search in sources :

Example 1 with DynomiteClusterModule

use of com.netflix.conductor.server.DynomiteClusterModule in project conductor by Netflix.

the class ModulesProvider method selectModulesToLoad.

private List<AbstractModule> selectModulesToLoad() {
    Configuration.DB database;
    List<AbstractModule> modules = new ArrayList<>();
    // Load Jackson module early to make ObjectMapper provider available across all the usages.
    modules.add(new JacksonModule());
    try {
        database = configuration.getDB();
    } catch (IllegalArgumentException ie) {
        final String message = "Invalid db name: " + configuration.getDBString() + ", supported values are: " + Arrays.toString(Configuration.DB.values());
        logger.error(message);
        throw new ProvisionException(message, ie);
    }
    switch(database) {
        case REDIS:
        case DYNOMITE:
            modules.add(new DynomiteClusterModule());
            modules.add(new RedisWorkflowModule());
            logger.info("Starting conductor server using dynomite/redis cluster.");
            break;
        case MYSQL:
            modules.add(new MySQLWorkflowModule());
            logger.info("Starting conductor server using MySQL data store.");
            break;
        case POSTGRES:
            modules.add(new PostgresWorkflowModule());
            logger.info("Starting conductor server using Postgres data store.");
            break;
        case MEMORY:
            modules.add(new LocalRedisModule());
            modules.add(new RedisWorkflowModule());
            logger.info("Starting conductor server using in memory data store.");
            break;
        case REDIS_CLUSTER:
            modules.add(new RedisClusterModule());
            modules.add(new RedisWorkflowModule());
            logger.info("Starting conductor server using redis_cluster.");
            break;
        case CASSANDRA:
            modules.add(new CassandraModule());
            logger.info("Starting conductor server using cassandra.");
            break;
        case REDIS_SENTINEL:
            modules.add(new RedisSentinelModule());
            modules.add(new RedisWorkflowModule());
            logger.info("Starting conductor server using redis_sentinel.");
            break;
    }
    if (configuration.isIndexingPersistenceEnabled())
        modules.add(new ElasticSearchModule());
    else
        modules.add(new NoopIndexModule());
    modules.add(new WorkflowExecutorModule());
    if (configuration.getJerseyEnabled()) {
        modules.add(new JerseyModule());
        modules.add(new SwaggerModule());
    }
    if (configuration.enableWorkflowExecutionLock()) {
        Configuration.LOCKING_SERVER lockingServer;
        try {
            lockingServer = configuration.getLockingServer();
        } catch (IllegalArgumentException ie) {
            final String message = "Invalid locking server name: " + configuration.getLockingServerString() + ", supported values are: " + Arrays.toString(Configuration.LOCKING_SERVER.values());
            logger.error(message);
            throw new ProvisionException(message, ie);
        }
        switch(lockingServer) {
            case REDIS:
                modules.add(new RedisLockModule());
                logger.info("Starting locking module using Redis cluster.");
                break;
            case ZOOKEEPER:
                modules.add(new ZookeeperModule());
                logger.info("Starting locking module using Zookeeper cluster.");
                break;
            case LOCAL_ONLY:
                modules.add(new LocalOnlyLockModule());
                logger.info("Starting locking module using local only JVM locking.");
                break;
            default:
                break;
        }
    } else {
        modules.add(new NoopLockModule());
        logger.warn("Starting locking module using Noop Lock.");
    }
    ExternalPayloadStorageType externalPayloadStorageType = null;
    String externalPayloadStorageString = configuration.getProperty("workflow.external.payload.storage", "DUMMY");
    try {
        externalPayloadStorageType = ExternalPayloadStorageType.valueOf(externalPayloadStorageString);
    } catch (IllegalArgumentException e) {
        logger.info("External payload storage is not configured, provided: {}, supported values are: {}", externalPayloadStorageString, Arrays.toString(ExternalPayloadStorageType.values()), e);
    }
    if (externalPayloadStorageType == ExternalPayloadStorageType.S3) {
        modules.add(new AbstractModule() {

            @Override
            protected void configure() {
                bind(ExternalPayloadStorage.class).to(S3PayloadStorage.class);
            }
        });
    } else {
        modules.add(new AbstractModule() {

            @Override
            protected void configure() {
                bind(ExternalPayloadStorage.class).to(DummyPayloadStorage.class);
            }
        });
    }
    new HttpTask(new RestClientManager(configuration), configuration, new JsonMapperProvider().get());
    new KafkaPublishTask(configuration, new KafkaProducerManager(configuration), new JsonMapperProvider().get());
    new JsonJqTransform(new JsonMapperProvider().get());
    modules.add(new ServerModule());
    return modules;
}
Also used : RedisClusterModule(com.netflix.conductor.server.RedisClusterModule) JerseyModule(com.netflix.conductor.server.JerseyModule) Configuration(com.netflix.conductor.core.config.Configuration) LocalRedisModule(com.netflix.conductor.server.LocalRedisModule) ArrayList(java.util.ArrayList) RedisSentinelModule(com.netflix.conductor.server.RedisSentinelModule) KafkaProducerManager(com.netflix.conductor.contribs.kafka.KafkaProducerManager) ServerModule(com.netflix.conductor.server.ServerModule) PostgresWorkflowModule(com.netflix.conductor.postgres.PostgresWorkflowModule) ElasticSearchModule(com.netflix.conductor.elasticsearch.ElasticSearchModule) ProvisionException(com.google.inject.ProvisionException) JsonJqTransform(com.netflix.conductor.contribs.json.JsonJqTransform) KafkaPublishTask(com.netflix.conductor.contribs.kafka.KafkaPublishTask) MySQLWorkflowModule(com.netflix.conductor.mysql.MySQLWorkflowModule) S3PayloadStorage(com.netflix.conductor.core.utils.S3PayloadStorage) WorkflowExecutorModule(com.netflix.conductor.core.execution.WorkflowExecutorModule) HttpTask(com.netflix.conductor.contribs.http.HttpTask) ZookeeperModule(com.netflix.conductor.zookeeper.config.ZookeeperModule) NoopLockModule(com.netflix.conductor.core.utils.NoopLockModule) DummyPayloadStorage(com.netflix.conductor.core.utils.DummyPayloadStorage) JacksonModule(com.netflix.conductor.core.config.JacksonModule) JsonMapperProvider(com.netflix.conductor.common.utils.JsonMapperProvider) AbstractModule(com.google.inject.AbstractModule) SwaggerModule(com.netflix.conductor.server.SwaggerModule) CassandraModule(com.netflix.conductor.cassandra.CassandraModule) LocalOnlyLockModule(com.netflix.conductor.core.utils.LocalOnlyLockModule) RestClientManager(com.netflix.conductor.contribs.http.RestClientManager) DynomiteClusterModule(com.netflix.conductor.server.DynomiteClusterModule) RedisWorkflowModule(com.netflix.conductor.dao.RedisWorkflowModule) RedisLockModule(com.netflix.conductor.locking.redis.config.RedisLockModule) NoopIndexModule(com.netflix.conductor.noopindex.NoopIndexModule)

Aggregations

AbstractModule (com.google.inject.AbstractModule)1 ProvisionException (com.google.inject.ProvisionException)1 CassandraModule (com.netflix.conductor.cassandra.CassandraModule)1 JsonMapperProvider (com.netflix.conductor.common.utils.JsonMapperProvider)1 HttpTask (com.netflix.conductor.contribs.http.HttpTask)1 RestClientManager (com.netflix.conductor.contribs.http.RestClientManager)1 JsonJqTransform (com.netflix.conductor.contribs.json.JsonJqTransform)1 KafkaProducerManager (com.netflix.conductor.contribs.kafka.KafkaProducerManager)1 KafkaPublishTask (com.netflix.conductor.contribs.kafka.KafkaPublishTask)1 Configuration (com.netflix.conductor.core.config.Configuration)1 JacksonModule (com.netflix.conductor.core.config.JacksonModule)1 WorkflowExecutorModule (com.netflix.conductor.core.execution.WorkflowExecutorModule)1 DummyPayloadStorage (com.netflix.conductor.core.utils.DummyPayloadStorage)1 LocalOnlyLockModule (com.netflix.conductor.core.utils.LocalOnlyLockModule)1 NoopLockModule (com.netflix.conductor.core.utils.NoopLockModule)1 S3PayloadStorage (com.netflix.conductor.core.utils.S3PayloadStorage)1 RedisWorkflowModule (com.netflix.conductor.dao.RedisWorkflowModule)1 ElasticSearchModule (com.netflix.conductor.elasticsearch.ElasticSearchModule)1 RedisLockModule (com.netflix.conductor.locking.redis.config.RedisLockModule)1 MySQLWorkflowModule (com.netflix.conductor.mysql.MySQLWorkflowModule)1