배경 : 나는 현재 "ZonedDateTime.now() 값"타이머"루프로 처리 할 때 "경로"에서 현재 ZonedDateTime (또는 Date)에 액세스하려면 어떻게합니까?
을 기록하고자하는 시간에은"구성은() "방법은 아래의 샘플 코드에서 지정된 시간 간격으로 루프
문제점 :.
ZonedDateTime.now() 값은 시간 간격의 차이에도 불구하고, 항상 동일한 값
질문 : 각 간격으로 현재 ZonedDateTime.now() 값에 액세스하는 데 사용할 수 있습니다 어떤 기술
?
(참고 : 나는 궁극적으로 REST 호출에서 매개 변수로이 값을 사용하고자하는) :
package aaa.bbb.ccc.dateparmissue;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.cdi.ContextName;
@ContextName("rest-dsl")
public class DateParmIssue extends RouteBuilder {
public DateParmIssue() {
}
private final String codeList = "AA,BB,CC";
private final int notifyTime = 10; //<==10 second interval
@Override
public void configure() throws Exception {
org.apache.log4j.MDC.put("app.name", "dateParmIssue");
System.getProperties().list(System.out);
onException(Exception.class)
.log("onException_processing_exception:" + this.exceptionMessage().toString() + "...send to_error_queue:" + body(String.class).toString())
.handled(true);
from("timer://foo?fixedRate=true&period=" + (notifyTime * 1000))
.setBody(constant(this.codeList))
.to("seda:node0");
from("seda:node0")
.split().tokenize(",")
.to("seda:node1");
from("seda:node1")
.log("seda:node1...body-code=${body}...zdt=" + simple(ZonedDateTime.now().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME)));
}
}
샘플 출력 ...
2017-12-27 12:17:11,649 | INFO | 1 - seda://node1 | route3 | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | direct:node1...body-code=AA...zdt=Simple: 2017-12-27T12:17:10.306-05:00
2017-12-27 12:17:11,653 | INFO | 1 - seda://node1 | route3 | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | direct:node1...body-code=BB...zdt=Simple: 2017-12-27T12:17:10.306-05:00
2017-12-27 12:17:11,653 | INFO | 1 - seda://node1 | route3 | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | direct:node1...body-code=CC...zdt=Simple: 2017-12-27T12:17:10.306-05:00
2017-12-27 12:17:21,630 | INFO | 1 - seda://node1 | route3 | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | direct:node1...body-code=AA...zdt=Simple: 2017-12-27T12:17:10.306-05:00
2017-12-27 12:17:21,630 | INFO | 1 - seda://node1 | route3 | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | direct:node1...body-code=BB...zdt=Simple: 2017-12-27T12:17:10.306-05:00
2017-12-27 12:17:21,631 | INFO | 1 - seda://node1 | route3 | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | direct:node1...body-code=CC...zdt=Simple: 2017-12-27T12:17:10.306-05:00
2017-12-27 12:17:31,633 | INFO | 1 - seda://node1 | route3 | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | direct:node1...body-code=AA...zdt=Simple: 2017-12-27T12:17:10.306-05:00
2017-12-27 12:17:31,636 | INFO | 1 - seda://node1 | route3 | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | direct:node1...body-code=BB...zdt=Simple: 2017-12-27T12:17:10.306-05:00
2017-12-27 12:17:31,637 | INFO | 1 - seda://node1 | route3 | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | direct:node1...body-code=CC...zdt=Simple: 2017-12-27T12:17:10.306-05:00
샘플 코드
을 변경, 'ZonedDateTime.now()'를 호출하면 JVM의 현재 기본 시간대가 암시 적으로 적용됩니다. 현재 기본값은 런타임 중 언제든지 변경 될 수 있습니다. 나는 항상 ZonedDateTime.now (ZoneId.of ("Africa/Tunis"))'와 같이'ZoneId' 객체로 명시 적으로 원하는/예상 시간대를 전달할 것을 제안합니다. 현재 기본 표준 시간대가 필요하면 명시 적으로 ['ZoneId.systemDefault()'] (https://docs.oracle.com/javase/9/docs/api)를 호출하여 해당 의도를 표시하도록 코드를보다자가 작성하십시오. /java/time/ZoneId.html#systemDefault--). –
비록 내가 풀려고했던 문제가 아니지만, 나는 당신의 요점을 확실히 알고 있습니다. 고마워, 바질! :-) – sairn