Spring Integration a un mécanisme appelé Poller qui s'exécute régulièrement, mais lors de sa définition en XML (<int: poller>), l'intervalle d'exécution tel que délai fixe ou taux fixe est défini. Il existe des attributs qui peuvent être définis, mais il n'y a pas d'attribut pour le délai de valeur initiale.
Ce qui suit est une description du «Poller» dans le fichier xsd 4.3.x.
xml: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>
<!--Abréviation-->
</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>
<!--Abréviation-->
</xsd:complexType>
Par conséquent, par exemple, une minute après le démarrage de l'application, il n'est pas possible de respecter la spécification que vous souhaitez envoyer périodiquement un message de surveillance pour voir s'il y a un problème avec la connexion.
Periodic TriggerAinsi, à la suite de recherches, une personne a posé une question similaire sur le forum en 2011.
Selon la réponse, il semble que vous deviez définir le délai initial dans la classe de déclenchement exécutée périodiquement appelée PeriodicTrigger et le définir dans l'attribut trigger de Poller.
Ainsi, lorsque j'ai défini PeriodicTrigger comme un bean et l'ai réglé sur l'attribut trigger de Poller comme indiqué ci-dessous, j'ai confirmé qu'un message de surveillance était émis toutes les 60 secondes après 60 secondes écoulées depuis le démarrage de l'application. C'est fait.
<!--Adaptateur qui émet des messages de surveillance-->
<int:inbound-channel-adapter id="monitoringAdapter"
auto-startup="true" expression="'monitor'.bytes"
channel="inboundMonitoringChannel">
<int:poller trigger="monitoringTrigger" />
</int:inbound-channel-adapter>
<!--Intervalle de diffusion des messages de surveillance-->
<!--Se déclenche à intervalles de 60 secondes après un délai initial de 60 secondes-->
<bean id="monitoringTrigger" class="org.springframework.scheduling.support.PeriodicTrigger"
c:period="60" c:timeUnit="SECONDS" p:initialDelay="60" />
La différence entre devient vague: rolling_eyes:.
Cet exemple de code est disponible sur GitHub (j'ai un peu changé le contenu: suer :).
Recommended Posts