我正在寻找比AxonFramework中的Saga更复杂的工作流程 - 我们目前正在使用它 - 我在Netflix Conductor中找到了一个。 可悲的是,我在互联网上搜索了一个不错的例子,但无济于事。
我的问题是,在Netflix Conductor中,如何定义和创建Task或WorkflowTask,最重要的是,将微服务链接到它?这是来自github的Netflix指挥代码:
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的新手。
答案 0 :(得分:2)
假设Micro服务在HTTP上有一个REST端点。在这种情况下,您必须使用HttpTask这是一项系统任务。 Httptask进行Http调用,响应可用作任务输出。请参阅以下链接:HttpTask
请记住将SchemaVersion设置为包含HttpTask的WorkflowDef的2。您还需要注册相应的Task type。
答案 1 :(得分:0)
(免责声明:我没试过,我只看文件......)
答案 2 :(得分:0)
@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;
}
}
此工作人员将轮询指挥服务器的任务