[JAVA] Tipps zum Festlegen der anfänglichen Verzögerung für Poller in XML

Betriebsüberprüfungsumgebung

Poller in XML definieren

Spring Integration verfügt über einen Mechanismus namens "Poller", der regelmäßig ausgeführt wird. Bei der Definition in XML ("<int: poller>") wird jedoch das Ausführungsintervall wie "feste Verzögerung" oder "feste Rate" festgelegt. Es gibt Attribute, die festgelegt werden können, aber es gibt kein Attribut für die Anfangswertverzögerung.

Das Folgende ist eine Beschreibung des Pollers in der 4.3.x xsd-Datei.

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>
		<!--Abkürzung-->
	</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>
	<!--Abkürzung-->
</xsd:complexType>

Daher ist es beispielsweise eine Minute nach dem Start der Anwendung nicht möglich, die Spezifikation zu erfüllen, dass Sie regelmäßig eine Überwachungsnachricht senden möchten, um festzustellen, ob ein Problem mit der Verbindung vorliegt.

Gelöst mit "Periodic Trigger"

Als Ergebnis einer Untersuchung gab es 2011 eine Person, die im Forum eine ähnliche Frage stellte.

Laut der Antwort sollten Sie die anfängliche Verzögerung in der periodisch ausgeführten Triggerklasse "PeriodicTrigger" und im Attribut "trigger" von "Poller" festlegen. Als ich "PeriodicTrigger" als Bean definierte und es wie unten gezeigt auf das "Trigger" -Attribut von "Poller" setzte, bestätigte ich, dass alle 60 Sekunden nach Ablauf von 60 Sekunden seit dem Start der Anwendung eine Überwachungsnachricht ausgelöst wurde. Es ist fertig.

<!--Adapter, der Überwachungsnachrichten auslöst-->
<int:inbound-channel-adapter id="monitoringAdapter"
    auto-startup="true" expression="'monitor'.bytes"
    channel="inboundMonitoringChannel">
    <int:poller trigger="monitoringTrigger" />
</int:inbound-channel-adapter>

<!--Intervall zum Auslösen von Überwachungsnachrichten-->
<!--Wird nach einer anfänglichen Verzögerung von 60 Sekunden im Abstand von 60 Sekunden ausgelöst-->
<bean id="monitoringTrigger" class="org.springframework.scheduling.support.PeriodicTrigger"
    c:period="60" c:timeUnit="SECONDS" p:initialDelay="60" />

abschließend

Der Unterschied zwischen wird vage: rollende_Augen :.

Dieser Beispielcode ist auf GitHub verfügbar (ich habe den Inhalt ein wenig geändert: Schweiß :).

neriudon-TriggerSample-

Recommended Posts

Tipps zum Festlegen der anfänglichen Verzögerung für Poller in XML
Tipps zum Umgang mit Enum mit Thymeleaf
Tipps zum Umgang mit Pseudoelementen in Selen
darf nicht in der for-Anweisung zurückgegeben werden
Tipps zur Behandlung von gRPC-Fehlern in Ruby
ChatWork4j für die Verwendung der ChatWork-API in Java
SourceMapPathOverrides Festlegen von Memos im VSCode Debugger für Chrome
Tipps zum Generieren von Dateien für Eclipse-Projekte mit Gradle