2014-12-08 3 views
1

"source : trigger"모듈이 Spring XD에서 작동하는 방법에 대해 약간 혼란 스럽습니다. 설명서를 기반으로 시작 날짜와 고정 지연을 제공 할 수 있으며 이론적으로 트리거를 정의하는 스트림은 해당 시간에만 시작하고 고정 지연에 따라 반복되어야합니다.스프링 XD - 모듈 "source : trigger"가 예상대로 작동하지 않습니다.

예를 들어

: 배포하면,이 스트림이 날짜 형식을 사용합니다 (12/08/14에 23시 35분 0초 정확히 난생 처음 발사 될 것으로 예상된다

stream create --name s1 --definition "trigger --date='12/08/14 23:35:00' --fixedDelay=10 | log" --deploy 

= " 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 [[email protected] 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에서 버그입니까? 예상되는 동작입니까? 후자의 경우, 주어진 시간에 발동하도록 트리거를 어떻게 설정할 수 있습니까?

은 BTW, 난 그냥 봄 XD 내가에서 일하고 있어요 같은 시간대를 사용하고 있는지 확인 "CET"시스템 프로퍼티 "user.timezone"를 설정 봄 XD를 시작했다.

답변

0

당신이 가리키는 될까요 문서에 나와요? 사실 최신 SNAPSHOT에서도 해당 모듈에 대한 좋은 설명서를 볼 수 없습니다.

source:trigger 모듈은 date, cron 또는 fixedDelay의 3 가지 프로파일을 기반으로합니다. 난 당신이 PeriodicTrigger#initialDelay을 사용하려는 생각

@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" }; 
    } 
} 

: 마지막 하나는 첫 번째 TriggerSourceOptionsMetadata보다 우선 순위가 있습니다. 불행히도 Spring 옵션은 XD 옵션으로 공개되지 않습니다.

use-delay 프로필의 경우 initialDelay 옵션이있는 해당 모듈에 대한 사용자 정의가 아닌, 사용자의 요구 사항을 극복하기위한 기본 방법이 없습니다.

source:trigger에 대한 설명서 및 initialDelay에 대한 지원과 관련하여 JIRA 호 문제를 자유롭게 제기하십시오.

+0

그래서 그 코드를 기반으로, 그들은 결합 될 수 없다는 것을 의미합니까? 응답 해 주셔서 감사합니다. –

+0

아니요, 할 수 없습니다. 실제로 우리는'TriggerSourceOptionsMetadata # isValid()'를 향상시켜야합니다. 모든 옵션은 상호 배타적입니다. 모든 문제를 해결하기 위해 문제를 제기하십시오. –

+0

이 문제를 추적하기 위해 https://jira.spring.io/browse/XD-2494가 생성되었습니다. – ebottard