我学习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容器调用工件?
答案 0 :(得分:1)
如果您打算从上游事件启动任务应用程序(例如,新的文件事件;新的DB记录事件; Rabbit事件中的新消息等),,您和# 39; d只需使用相应的out-of-the-box applications,然后通过任务启动器启动任务。
按照example关于如何通过SCDF的DSL精心策划3步骤。
也许您可以考虑重复使用现有应用,而不是重新发明它们,除非您有完全不同的要求并且这些应用无法满足要求。在你考虑扩展行为之前,我建议尝试让上面提到的例子在本地工作。