0

我学习了 Spring Cloud Task 并编写了简单的应用程序,该应用程序分为 3 个服务。第一个TaskApplication是只有main()并实现CommandLineRunner的,第二个是TaskIntakeApplication接收请求并将它们发送到 RabbitMQ,第三个服务是TaskLauncherApplication从 RabbitMQ 接收消息并使用接收到的参数运行任务。

@Component
@EnableBinding(Source.class)
public class TaskProcessor {

    @Autowired
    private Source source;

    public void publishRequest(String arguments) {
        final String url = "maven://groupId:artifatcId:jar:version";
        final List<String> args = Arrays.asList(arguments.split(","));
        final TaskLaunchRequest request = new TaskLaunchRequest(url, args, null, null, "TaskApplication");
        final GenericMessage<TaskLaunchRequest> message = new GenericMessage<>(request);
        source.output().send(message);
    }
}

正如你所看到的,我通过提供 maven url 来调用我构建的工件,但我想知道如何从另一个 docker 容器调用工件?

4

1 回答 1

1

如果您打算从上游事件(例如,新文件事件;新数据库记录事件;Rabbit 事件中的新消息等)启动任务应用程序,您只需使用相应的out-of-the -box 应用程序,然后通过任务启动器启动任务。

按照这个示例了解如何通过 SCDF 的 DSL 编排这 3 个步骤。

也许您可以考虑重用现有的应用程序而不是重新发明它们,除非您有完全不同的要求并且这些应用程序无法满足它。我建议在考虑扩展行为之前尝试让上面提到的示例在本地工作。

于 2018-01-03T14:36:50.393 回答