Search in sources :

Example 1 with WorkflowExecutorModule

use of com.netflix.conductor.core.execution.WorkflowExecutorModule in project conductor by Netflix.

the class MockQueueDAOModule method configureQueueDAO.

@Override
public void configureQueueDAO() {
    DetachedMockFactory detachedMockFactory = new DetachedMockFactory();
    JedisCommands jedisMock = new JedisMock();
    ShardSupplier shardSupplier = new ShardSupplier() {

        @Override
        public Set<String> getQueueShards() {
            return new HashSet<>(Collections.singletonList("a"));
        }

        @Override
        public String getCurrentShard() {
            return "a";
        }

        @Override
        public String getShardForHost(Host host) {
            return "a";
        }
    };
    RedisQueues redisQueues = new RedisQueues(jedisMock, jedisMock, "mockedQueues", shardSupplier, 60000, 120000);
    DynoQueueDAO dynoQueueDAO = new DynoQueueDAO(redisQueues);
    bind(QueueDAO.class).toInstance(detachedMockFactory.Spy(dynoQueueDAO));
    install(new WorkflowExecutorModule());
}
Also used : DynoQueueDAO(com.netflix.conductor.dao.dynomite.queue.DynoQueueDAO) QueueDAO(com.netflix.conductor.dao.QueueDAO) JedisCommands(redis.clients.jedis.commands.JedisCommands) DynoQueueDAO(com.netflix.conductor.dao.dynomite.queue.DynoQueueDAO) WorkflowExecutorModule(com.netflix.conductor.core.execution.WorkflowExecutorModule) JedisMock(com.netflix.conductor.jedis.JedisMock) Host(com.netflix.dyno.connectionpool.Host) RedisQueues(com.netflix.dyno.queues.redis.RedisQueues) DetachedMockFactory(spock.mock.DetachedMockFactory) ShardSupplier(com.netflix.dyno.queues.ShardSupplier) HashSet(java.util.HashSet)

Example 2 with WorkflowExecutorModule

use of com.netflix.conductor.core.execution.WorkflowExecutorModule 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

WorkflowExecutorModule (com.netflix.conductor.core.execution.WorkflowExecutorModule)2 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 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 QueueDAO (com.netflix.conductor.dao.QueueDAO)1 RedisWorkflowModule (com.netflix.conductor.dao.RedisWorkflowModule)1 DynoQueueDAO (com.netflix.conductor.dao.dynomite.queue.DynoQueueDAO)1 ElasticSearchModule (com.netflix.conductor.elasticsearch.ElasticSearchModule)1