[JAVA] Conseils pour définir le délai initial pour Poller dans XML

Environnement de vérification de fonctionnement

Définir Poller dans XML

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.

Résolu avec Periodic Trigger

Ainsi, à 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" />

en conclusion

La différence entre devient vague: rolling_eyes:.

Cet exemple de code est disponible sur GitHub (j'ai un peu changé le contenu: suer :).

neriudon-TriggerSample-

Recommended Posts

Conseils pour définir le délai initial pour Poller dans XML
Conseils pour la gestion des énumérations avec thymeleaf
Conseils pour gérer les pseudo-éléments dans Selenium
ne doit pas retourner dans l'instruction for
Conseils pour la gestion des erreurs de gRPC dans Ruby
ChatWork4j pour l'utilisation de l'API ChatWork en Java
SourceMapPathOverrides paramètre mémo dans le débogueur VSCode pour Chrome
Conseils pour générer des fichiers pour les projets d'éclipse avec Gradle