我在 Spring Cloud Data Flow 中注册了我的任务应用程序,为它创建了一个定义,状态显示为“未知”。我创建了流并尝试通过任务接收器启动任务,但出现错误:
java.lang.IllegalStateException: failed to resolve MavenResource:
如何从任务接收器启动任务?我错过了什么吗?任何帮助表示赞赏。我的另一个问题是如何在我的任务中访问通过 TaskLaunchRequest 发送的有效负载?S1 http | step1: 变压器兔 | 日志 S2 :S1.step1 > 过滤器 --expression=payload.contains('CUSTADDRMODRQ_V15') | 任务处理器 | 任务接收器
task-sink 正在启动 TaskLaunchRequest 中 uri 提供的任务。它正在寻找资源,如日志中所示 OUT 使用管理器 EnhancedLocalRepositoryManager 优先级 10.0 用于 /home/vcap/.m2/repository OUT 使用传输器 HttpTransporter 优先级 5.0 用于https://repo.spring.io/libs-snapshot和终于失败了。
该任务部署在我们的存储库中,如前所述,我也为它注册并创建了定义。
这是在 cf 环境中,我使用的是 SCDF 服务器 1.0.0.M4。在任务接收器的 application.properties 中,我提供 maven.remote.repositories.snapshots.url=**
任务创建 fis-ifx-event-task --definition "fis-event-task"
我的目标是从流中启动任务。
谢谢提供信息。我实际上正在使用 BUILD-SNAPSHOT,因为我无法在 1.0.0M4 版本中启用 taks。这是我正在使用的 spring-cloud-dataflow-server-cloudfoundry-1.0.0.BUILD-20160808.144306-116。我能够注册和创建任务定义。即使我使用您团队提供的示例任务模块,任务定义的状态也显示为“未知”。但是当我启动流的流程并且当 task-sink 尝试启动任务时,它无法找到 maven 资源。创建任务定义时,是否部署了任务模块?我在 Pivotal Apps Manager 中看不到任何应用程序。如前所述,我在 application.properties 文件中为 task-sink 应用程序提供了 maven.remote.repositories.snapshot.url。我观察到的另一件事是,当我从数据流 shell 手动启动任务时,它会给出错误 CF-UnprocessableEntity(10008): The request is semantically invalid: Unknown field(s): 'staging_disk_in_mb', 'staging_memory_in_mb' 还有一条消息说'源为空'。目前该任务应该打印时间戳并且不依赖于任何输入。
TaskProcessor code:
@EnableBinding(Processor.class)
@EnableConfigurationProperties(TaskProcessorProperties.class)
public class TaskProcessor {
@Autowired
private TaskProcessorProperties processorProperties;
public TaskProcessor() {
}
@Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT)
@ELI(level = "info", eventType = ELIEventType.INBOUND)
public Object setupRequest(String message) {
Map<String, String> properties = new HashMap<String, String>();
properties.put("payload", message);
TaskLaunchRequest request = new TaskLaunchRequest(processorProperties.getUri(), null, properties, null);
return new GenericMessage<>(request);
}
}
TaskSink code:
@SpringBootApplication
@EnableTaskLauncher
@EnableBinding(Sink.class)
@EnableConfigurationProperties(TaskSinkProperties.class)
public class FisIfxEventTaskSinkApplication {
public static void main(String[] args) {
SpringApplication.run(FisIfxEventTaskSinkApplication.class, args);
}
}
我在帖子前面提供了我正在使用的流。如您在此处看到的,Sink 正在接收带有 uri 和有效负载的 TaskLaunchRequest,并且无法启动任务。
OUT registering [40, java.io.File] with serializer org.springframework.integration.codec.kryo.FileSerializer
2016-08-10T16:08:55.02-0600 [APP/0]
OUT Launching Task for the following resource TaskLaunchRequest{uri='maven://com.xxx:fis.ifx.event-task:jar:1.0-SNAPSHOT', commandlineArguments=[], environmentProperties={payload={"statusCode":0,"fisT
opic":"CustomerDataUpdated","payloadId":"CUSTADDRMODR``Q_V15","customerIds":[1597304]}}, deploymentProperties={}}