1

モジュール「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 を起動しました。

4

1 に答える 1

0

ドキュメントを指摘していただけませんか?実際、最新の SNAPSHOT でも、そのモジュールに関する適切なドキュメントは見当たりません。

モジュールは、 、またはのsource:trigger3 つのプロファイルに基づいています。最後のものは最初のものよりも優先されます:datecronfixedDelayTriggerSourceOptionsMetadata

@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

のドキュメントとサポートに関するJIRAの問題を自由に提起してください。source:triggerinitialDelay

于 2014-12-09T08:54:30.123 に答える