如何将微服务(或其方法)注册到Netflix Conductor的任务中?

9

我正在寻找比我们目前使用的AxonFramework中的Saga更复杂的工作流程,并在Netflix Conductor中找到了一个。

不幸的是,我在互联网上搜索了很多但没有找到一个好的例子。

我的问题是,在Netflix Conductor中,如何定义和创建任务或工作流任务,并最重要的是,如何将微服务与之链接?以下是来自Github的Netflix Conductor代码:

    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的新手。

4个回答

2
假设微服务具有HTTP上的REST端点。在这种情况下,您需要使用HttpTask,它是一个系统任务。Httptask发出Http调用,并且响应可用作任务输出。请参考以下链接:HttpTask
请记得为包含HttpTask的WorkflowDef设置SchemaVersion为2。您还需要注册相应的任务类型

0

0

现在有许多SDK可用于将您的微服务工作程序连接到Conductor:https://github.com/conductor-sdk/

您可以在Conductor中创建一个简单的任务(使用API端点和这些参数https://conductor.netflix.com/configuration/taskdef.html)。

工作程序在Conductor中轮询您的任务。当任务需要运行时,它会将其分配给工作程序。完成后,任务将从工作程序获取结果并返回到Conductor工作流程。

以下是Go中的工作程序示例:https://github.com/conductor-sdk/conductor-examples/tree/main/go-samples

还有一个Java示例:https://github.com/orkes-io/orkesworkers

最后 - 现在有一个免费的云游乐场可供Netflix conductor使用:https://play.orkes.io


0
  1. 定义一个任务客户端Bean,并重写worker类的execute方法。
  2. 将任务客户端和工作器Bean传递给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;
        }
    }

这些工作者将从主管服务器轮询任务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接