2016-04-12 2 views
2

Wer Spring Empfänger-Liste-Router mit Timeout-Attribut verwendet?Spring-Integration - Empfänger-Liste-Router-Timeout

<int:recipient-list-router id="customRouter" input-channel="routingChannel" 
     timeout="1234" 
     ignore-send-failures="true" 
     apply-sequence="true"> 
    <int:recipient channel="channel1"/> 
    <int:recipient channel="channel2"/> 
</int:recipient-list-router> 

Timeout: Das Timeout-Attribut gibt die maximale Menge an Zeit in Millisekunden, zu warten, wenn Nachrichten an die Zielnachrichtenkanäle senden. Standardmäßig wird der Sendevorgang unbegrenzt blockiert.

Ich versuche herauszufinden, was wäre eine gute Menge an Zeit zu warten vor dem Weitergehen zum nächsten Kanal.

+0

Was ist Ihr Ausgabekanal? Wenn es keine Warteschlange (endliche Größe) ist, müssen Sie keine Zeitüberschreitung setzen. –

+0

Es ist ein Warteschlangenkanal, ich frage mich, was ist eine gute Menge Zeit zu warten? –

Antwort

2

Gerade jetzt, es klingt wie:

<xsd:attribute name="timeout" type="xsd:string"> 
     <xsd:annotation> 
      <xsd:documentation> 
       Specify the maximum amount of time in milliseconds to wait 
       when sending Messages to the target MessageChannels if blocking 
       is possible (e.g. a bounded queue channel that is currently full). 
       By default the send will block indefinitely. 
       DEPRECATED in favor of 'send-timeout' for consistency with other elements. 
      </xsd:documentation> 
     </xsd:annotation> 
    </xsd:attribute> 

Achten Sie auf die bounded queue channel Phrase. Dies gilt also nur dann für MessagingTemplate, wenn Ihr Zielkanal auf die Größe beschränkt ist.

Also, wenn Ihr Kanal ist DirectChannel, gibt es keine Möglichkeit zu warten. Nur weil die AbstractMessageRouter als eine einfache loop Logik ist und die send und damit Verarbeitung auf dem gleichen Thread durchgeführt wird.

+0

Es ist ein Warteschlangenkanal, ich frage mich, was ist eine gute Zeit zu warten? –

+2

Ja ... Es ist eine vernünftige Zeit zu warten, bevor die TimeoutException ausgelöst wird. Berücksichtigen Sie dasselbe Szenario mit dem HTTP-Client oder anderen TCP/IP-Interaktionen. Ich würde sagen, dass der bessere Weg, um einen Blick zu werfen, der Absender ist: wie es angemessen ist, dass er von Ihnen zurückwartet. Es hängt also wirklich von der Zielanwendung ab und diese Option passt nicht zu einem allgemeinen Rezept, wie Sie es von uns hören möchten. –

+1

@PrasadParavatha: Eine gute Menge Zeit zu warten wäre, wo Sie es nicht zu lange blockieren und Sie nicht Pakete zu früh fallen :)) –