Как мне зарегистрировать микросервис (или его методы) в 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.
- Определите компонент клиента задачи и переопределите метод выполнения рабочего класса.
- Передайте компоненты клиента задачи и рабочие компоненты в 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;
}
}
Эти воркеры будут опрашивать задачи с сервера-проводника
(отказ от ответственности: я не пробовал, я просто посмотрел на документацию...)
- реализовать свой собственный WorkflowSystemTask
- переопределить метод start() / execute() для вызова микросервиса
- установите тип задачи в ПРОСТО в соответствии с https://netflix.github.io/conductor/intro/concepts/