Я немного запутался в том, как модуль «источник: триггер» должен работать в Spring XD. Основываясь на документации, вы можете указать дату начала и фиксированную задержку, и теоретически поток, определяющий триггер, должен начинаться только в это время и повторяться на основе фиксированной задержки.
Например:
stream create --name s1 --definition "trigger --date='12/08/14 23:35:00' --fixedDelay=10 | log" --deploy
Ожидается, что при развертывании этот поток будет запущен в самый первый раз ровно в 23:35:00 08.12.14 (с использованием формата даты = "ММ/дд/гг ЧЧ:мм:сс"); однако он запускается сразу после развертывания, независимо от времени:
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 использует тот же часовой пояс, в котором я работаю.