Spring Cloud Task - 从 docker 容器中的 Maven 存储库启动任务

Spring Cloud Task - launch task from maven repository in docker container

我学习 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 容器调用工件?

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

按照此 example 了解如何通过 SCDF 的 DSL 协调 3 个步骤。

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