我对模块“source:trigger”应该如何在 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");但是,它会在部署后立即触发,无论时间是什么:
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 -
因此,为什么这个流不考虑“日期”参数,而只是在部署时触发?这是 Spring XD 中的错误还是预期行为?如果是后者,我该如何设置这样的触发器,使其仅在给定时间触发?
顺便说一句,我启动 Spring XD 将系统属性“user.timezone”设置为“CET”,只是为了确保 Spring XD 使用我正在使用的相同 TimeZone。