Как мне зарегистрировать микросервис (или его методы) в 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.

4 ответа

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

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

В настоящее время существует ряд SDK для подключения вашего микросервисного работника к Conductor: https://github.com/conductor-sdk/

Вы можете создать ПРОСТОЕ задание в Проводнике (используя конечную точку API и эти параметры https://conductor.netflix.com/configuration/taskdef.html .

Рабочие опрашивают ваши задачи в Проводнике. Когда задача как работа должна быть запущена, она назначает ее работнику. По завершении задача возвращает результаты рабочих процессов обратно в рабочий процесс Conductor.

Вот рабочий в Go: https://github.com/conductor-sdk/conductor-examples/tree/main/go-samples

И пример Java: https://github.com/orkes-io/orkesworkers

Наконец-то появилась бесплатная облачная площадка для кондуктора Netflix по адресу https://play.orkes.io.

  1. Определите компонент клиента задачи и переопределите метод выполнения рабочего класса.
  2. Передайте компоненты клиента задачи и рабочие компоненты в 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;
        }
    }

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

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

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