我对模块"来源:触发"有点困惑。应该在Spring XD中工作。根据文档,您可以提供开始日期和固定延迟,理论上,定义触发器的流应该只在那个时间开始,并根据固定的延迟重复自己。
例如:
stream create --name s1 --definition "trigger --date='12/08/14 23:35:00' --fixedDelay=10 | log" --deploy
部署后,预计此流将于2014年8月12日23:35:00首次发射(使用日期格式=" MM / dd / yy HH:mm :SS&#34);然而,无论什么时候,它都会在部署之后被解雇:
23:33:28,409 1.1.0.SNAP INFO DeploymentsPathChildrenCache-0 server.DeploymentListener - Deploying module 'trigger' for stream 's1'
23:33:28,572 1.1.0.SNAP INFO DeploymentsPathChildrenCache-0 server.DeploymentListener - Deploying module [ModuleDescriptor@760ca434 moduleName = 'trigger', moduleLabel = 'trigger', group = 's1', sourceChannelName = [null], sinkChannelName = [null], sinkChannelName = [null], index = 0, type = source, parameters = map['date' -> '12/08/14 23:35:00', 'fixedDelay' -> '10'], children = list[[empty]]]
23:33:28,946 1.1.0.SNAP INFO task-scheduler-9 sink.s1 -
23:33:28,954 1.1.0.SNAP INFO Deployer server.StreamDeploymentListener - Deployment status for stream 's1': DeploymentStatus{state=deployed}
23:33:28,955 1.1.0.SNAP INFO Deployer server.StreamDeploymentListener - Stream Stream{name='s1'} deployment attempt complete
如日志所示,流" s1"实际上是在23:33:28开始,比预期更早。一旦启动,它将按照固定延迟中的配置每10秒重复一次:
23:33:38,952 1.1.0.SNAP INFO task-scheduler-9 sink.s1 -
23:33:48,956 1.1.0.SNAP INFO task-scheduler-9 sink.s1 -
23:33:58,961 1.1.0.SNAP INFO task-scheduler-4 sink.s1 -
23:34:08,966 1.1.0.SNAP INFO task-scheduler-2 sink.s1 -
23:34:18,969 1.1.0.SNAP INFO task-scheduler-2 sink.s1 -
23:34:28,973 1.1.0.SNAP INFO task-scheduler-1 sink.s1 -
23:34:38,974 1.1.0.SNAP INFO task-scheduler-9 sink.s1 -
23:34:48,979 1.1.0.SNAP INFO task-scheduler-9 sink.s1 -
23:34:58,984 1.1.0.SNAP INFO task-scheduler-9 sink.s1 -
23:35:08,989 1.1.0.SNAP INFO task-scheduler-9 sink.s1 -
23:35:18,993 1.1.0.SNAP INFO task-scheduler-9 sink.s1 -
23:35:28,998 1.1.0.SNAP INFO task-scheduler-1 sink.s1 -
23:35:39,003 1.1.0.SNAP INFO task-scheduler-1 sink.s1 -
23:35:49,009 1.1.0.SNAP INFO task-scheduler-1 sink.s1 -
23:35:59,013 1.1.0.SNAP INFO task-scheduler-1 sink.s1 -
23:36:09,017 1.1.0.SNAP INFO task-scheduler-1 sink.s1 -
23:36:19,022 1.1.0.SNAP INFO task-scheduler-1 sink.s1 -
因此,为什么这个流没有考虑到" date"参数,但只要它被部署就会触发?这是Spring XD中的错误还是预期的行为?如果是后者,我该如何设置这样一个触发器,以便它只在给定时间触发?
顺便说一下,我启动了Spring XD设置系统属性" user.timezone"到" CET",只是为了确保Spring XD使用我工作的相同TimeZone。
答案 0 :(得分:0)
你介意指出文档吗?实际上,即使在最新的SNAPSHOT中,我也看不到该模块的良好文档。
source:trigger
模块基于3个配置文件:date
,cron
或fixedDelay
。最后一个优先于第一个TriggerSourceOptionsMetadata
:
@Override
public String[] profilesToActivate() {
if (cron != null) {
return new String[] { "use-cron" };
}
else if (fixedDelay != null) {
return new String[] { "use-delay" };
}
else {
return new String[] { "use-date" };
}
}
我想你想使用PeriodicTrigger#initialDelay
。不幸的是,Spring选项并未作为XD选项公开。
我没有看到任何开箱即用的方法来克服您的要求,而不是使用initialDelay
个人资料的use-delay
选项对该模块进行一些自定义。
随时提出有关source:trigger
文档和initialDelay
支持的JIRA问题。