kymr / conductor

Conductor is a microservices orchestration engine - https://netflix.github.io/conductor/
Apache License 2.0
0 stars 0 forks source link

[Code] conductor-core #19

Open kymr opened 6 years ago

kymr commented 6 years ago

Summary

Dependency

kymr commented 6 years ago

Dependencies

dependencies {

compile project(':conductor-common')

compile "io.reactivex:rxjava:${revRxJava}"
compile "com.google.inject:guice:${revGuice}"
compile "com.google.inject.extensions:guice-multibindings:${revGuiceMultiBindings}"

compile "com.netflix.servo:servo-core:${revServo}"
compile "com.netflix.spectator:spectator-api:${revSpectator}"
compile "com.fasterxml.jackson.core:jackson-databind:${revJacksonDatabind}"
compile "com.fasterxml.jackson.core:jackson-core:${revJacksonCore}"
compile "com.jayway.jsonpath:json-path:${revJsonPath}"

compile "org.apache.commons:commons-lang3:${revCommonsLang3}"

compile "com.spotify:completable-futures:${revSpotifyCompletableFutures}"

testCompile "org.slf4j:slf4j-log4j12:${revSlf4jlog4j}"

}

kymr commented 6 years ago

CoreModule.java

    @Override
    protected void configure() {
        install(MultibindingsScanner.asModule());
        requestStaticInjection(EventQueues.class);
        bind(ActionProcessor.class).asEagerSingleton();
        bind(EventProcessor.class).asEagerSingleton();
        bind(SystemTaskWorkerCoordinator.class).asEagerSingleton();
        bind(SubWorkflow.class).asEagerSingleton();
        bind(Wait.class).asEagerSingleton();
        bind(Event.class).asEagerSingleton();
    }
kymr commented 5 years ago

ActionProcessor.java

kymr commented 5 years ago

EventProcessor.java

kymr commented 5 years ago

EventQueueProvider

EventQueues.java

    public static ObservableQueue getQueue(String eventType) {
        String event = parametersUtils.replace(eventType).toString();
        int index = event.indexOf(':');
        if (index == -1) {
            logger.error("Queue cannot be configured for illegal event: {}", event);
            throw new IllegalArgumentException("Illegal event " + event);
        }

        String type = event.substring(0, index);
        String queueURI = event.substring(index + 1);
        EventQueueProvider provider = providers.get(type);
        if (provider != null) {
            return provider.getQueue(queueURI);
        } else {
            logger.error("Queue {} is not configured for event:{}", type, eventType);
            throw new IllegalArgumentException("Unknown queue type " + type);
        }
    }
kymr commented 5 years ago

ScriptEvaluator.java

kymr commented 5 years ago

ObservableQueue.java

kymr commented 5 years ago

Message.java

    private String payload;
    private String id;
    private String receipt;
kymr commented 5 years ago

DynoEventQueueProvider.java

    private final Map<String, ObservableQueue> queues = new ConcurrentHashMap<>();
    private final QueueDAO queueDAO;
    private final Configuration config;

    @Inject
    public DynoEventQueueProvider(QueueDAO queueDAO, Configuration config) {
        this.queueDAO = queueDAO;
        this.config = config;
    }

    @Override
    public ObservableQueue getQueue(String queueURI) {
        return queues.computeIfAbsent(queueURI, q -> new DynoObservableQueue(queueURI, queueDAO, config));
    }
kymr commented 5 years ago

DynoObservableQueue.java

kymr commented 5 years ago

execution.mapper

kymr commented 5 years ago

execution.tasks

kymr commented 5 years ago

DeciderService

내용 내용 내용 내용 내용