Как зарегистрировать микросервис (или его методы) в Task в Netflix Conductor?

Я искал более сложный рабочий процесс, чем Saga от AxonFramework, который мы сейчас используем, и нашел его в Netflix Conductor. К сожалению, я искал в Интернете достойный пример, но безрезультатно.

Мой вопрос в том, как в Netflix Conductor можно определить и создать Task или WorkflowTask и, самое главное, связать с ним микросервис? Вот код проводника Netflix из github:

    WorkflowDef def = new WorkflowDef();
    def.setName("test");
    WorkflowTask t0 = new WorkflowTask();
    t0.setName("t0");
    t0.setType(Type.SIMPLE);
    t0.setTaskReferenceName("t0");

    WorkflowTask t1 = new WorkflowTask();
    t1.setName("t1");
    t1.setType(Type.SIMPLE);
    t1.setTaskReferenceName("t1");

    def.getTasks().add(t0);
    def.getTasks().add(t1);

Простите мою путаницу, так как я новичок в Netflix Conductor.


person ben.jamin    schedule 27.01.2017    source источник
comment
@Maxim Fateev: Избавь меня от обычного шума и придирок. Ранняя версия Netflix Conductor использовала AWS SWF.   -  person ben.jamin    schedule 28.01.2017


Ответы (3)


Предположим, что служба Micro имеет конечную точку REST через HTTP. В этом случае вы должны использовать HttpTask, который является системной задачей. Httptask выполняет вызов Http, и ответ доступен в виде выходных данных задачи. Пожалуйста, перейдите по ссылке ниже: HttpTask

Пожалуйста, не забудьте установить SchemaVersion как 2 для WorkflowDef, который содержит HttpTask. Вам также потребуется зарегистрировать соответствующий тип задачи.

person Smbk    schedule 09.06.2017

(отказ от ответственности: я не пробовал, я просто посмотрел документацию...)

  1. реализовать свой собственный WorkflowSystemTask
  2. переопределить метод start()/execute() для вызова вашего микросервиса
  3. установите тип задачи ПРОСТОЙ в соответствии с https://netflix.github.io/conductor/intro/concepts/#worker-taks
person clai    schedule 01.02.2017

  1. Определите клиентский компонент задачи и замените метод выполнения рабочего класса.
  2. Передайте клиент Task и рабочие компоненты в TaskRunnerConfigurer
    @Configuration
    public class Configuration {
        @Bean
        public TaskClient taskClient(@Value("${conductor url}") String conductorServerURL) {
            TaskClient taskClient = new TaskClient();
            taskClient.setRootURI(conductorServerURL);
            return taskClient;
        }

        @Bean
        public TaskRunnerConfigurer taskRunnerConfigurer(
                @Autowired final TaskClient taskClient,
                @Autowired final List<Worker> workers) {
            final TaskRunnerConfigurer taskRunnerConfigurer = new TaskRunnerConfigurer.Builder(taskClient, workers)
                    .withThreadCount(3)
                    .build();


            taskRunnerConfigurer.init();

            return taskRunnerConfigurer;
        }
    }

Эти воркеры будут опрашивать задачи с сервера-проводника.

person Rama    schedule 22.01.2020