モジュール「source:trigger」が Spring XD でどのように機能するかについて、少し混乱しています。ドキュメントに基づいて、開始日と固定遅延を指定できます。理論的には、トリガーを定義するストリームはその時点でのみ開始し、固定遅延に基づいて繰り返す必要があります。
例えば:
stream create --name s1 --definition "trigger --date='12/08/14 23:35:00' --fixedDelay=10 | log" --deploy
展開されると、このストリームは 12/08/14 の 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 が作業しているのと同じ TimeZone を使用するようにするためだけに、システム プロパティ「user.timezone」を「CET」に設定して Spring XD を起動しました。