XML로 Poller에 초기 지연 설정하기 Tips
7234 단어 자바spring-integrationspring
동작 확인 환경
XML로 Poller 정의
Spring Integration에는 정기적으로
Poller
를 실행하는 메커니즘이 있지만 XML (<int:poller>
)로 정의 할 때 fixed-delay
및 fixed-rate
와 같은 실행 간격을 설정할 수있는 속성이 있습니다. 하지만 초기값 지연의 속성은 준비되어 있지 않습니다.다음은 4.3.x xsd 파일
Poller
에 대한 설명입니다.spring-integration-4.3.xsd
<xsd:element name="poller">
<xsd:annotation>
<xsd:documentation>
Defines a top-level poller - 'org.springframework.integration.scheduling.PollerMetadata'.
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="basePollerType">
<xsd:attribute name="id" type="xsd:string" />
<xsd:attribute name="default" type="xsd:boolean" default="false" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="basePollerType">
<xsd:annotation>
<xsd:documentation>
Defines the configuration metadata for a poller.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<!-- 略 -->
</xsd:sequence>
<xsd:attribute name="fixed-delay" type="xsd:string">
<xsd:annotation>
<xsd:documentation>Fixed delay trigger (in milliseconds).</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="ref" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation>
Allows this poller to reference another instance of a top-level poller.
[IMPORTANT] - This attribute is only allowed on inner poller definitions.
Defining this attribute on a top-level poller definition will result in a configuration exception.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="fixed-rate" type="xsd:string">
<xsd:annotation>
<xsd:documentation>Fixed rate trigger (in milliseconds).</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<!-- 略 -->
</xsd:complexType>
따라서 애플리케이션 시작 후 1분이 지나면 연결에 문제가 없거나 정기적으로 모니터링 메시지를 던지려는 사양을 충족할 수 없습니다.
PeriodicTrigger로 해결
그래서 조사한 결과 무려 2011년에 포럼에서 비슷한 질문을 하고 있던 분이 있었습니다.
그 응답에 따르면,
PeriodicTrigger
라는 정기적으로 실행하는 트리거 클래스에 초기 지연을 설정해, Poller
의 trigger
속성으로 설정하면 좋은 것 같습니다.따라서 다음과 같이
PeriodicTrigger
를 빈 정의하고 Poller
의 trigger
속성으로 설정했는데, 애플리케이션 시작 후 60초가 경과한 후 60초 간격으로 감시 메시지가 던져지는 것을 확인 할 수 있었습니다.<!-- 監視メッセージを投げるアダプタ -->
<int:inbound-channel-adapter id="monitoringAdapter"
auto-startup="true" expression="'monitor'.bytes"
channel="inboundMonitoringChannel">
<int:poller trigger="monitoringTrigger" />
</int:inbound-channel-adapter>
<!-- 監視メッセージを投げる間隔 -->
<!-- 初期遅延60秒後に60秒間隔で発火 -->
<bean id="monitoringTrigger" class="org.springframework.scheduling.support.PeriodicTrigger"
c:period="60" c:timeUnit="SECONDS" p:initialDelay="60" />
결론
의 차이가 멍하니 되었습니다 .
이번 샘플 코드는 GitHub에서 공개하고 있습니다 (내용은 조금 바꿨습니다 ).
neriudon-TriggerSample-
Reference
이 문제에 관하여(XML로 Poller에 초기 지연 설정하기 Tips), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/neriudon/items/5120d5512c2560e92b95텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)