Шлюз default-reply-timeout не имеет никакого эффекта и все еще ожидает ответа (Spring Integration) - PullRequest
0 голосов
/ 05 октября 2018

Я пробовал время ожидания ответа Gateway в Spring Integration, но оно не работает в конфигурации, которую я использовал ниже:

    <int:gateway id="TrailerGateway" service-interface="com.12lmdk.gateways.TrailerGateway" 
     default-request-channel="trailerChannel" default-reply-timeout="5000"/>

       <int:channel id="trailerChannel" />

    <int:service-activator input-channel="trailerChannel" 
    ref="trailerService" method="getTrailer"/>

Я прочитал в вопросе stackoverflow, что я долженпредоставьте канал ответа на шлюзе и выходной канал в активаторе службы, и этот канал должен быть опрашиваемым, поэтому я попробовал это также

    <int:gateway id="TrailerGateway" service-interface="com.12lmdk.gateways.TrailerGateway" default-reply-channel="trailerOutputChannel" default-reply-timeout="5000"/>

    <int:channel id="trailerChannel" />
    <int:channel id="trailerOutputChannel" >
       <int:queue/>
    </int:channel>

    <int:service-activator input-channel="trailerChannel" output-channel="trailerOutputChannel" ref="trailerService" method="getTrailer"/>

Это все равно не будет работать, и время ожидания ответа не будет иметь никакого эффекта.(Я проверил это, поместив Thread.sleep в 10 секунд в один из методов, к которым обращается активатор службы). Шлюз все еще ожидает ответа от активатора службы, что не соответствует ожиданиям.

Как я могу произвести исключение или даже нулевой ответ от шлюза из-за таймаута ???

1 Ответ

0 голосов
/ 05 октября 2018

Таймер не запускается, пока поток не вернется к шлюзу.Он предназначен для использования, когда вызывающий поток передает работу другому потоку, например, с QueueChannel или ExecutorChannel.Когда вызывающий поток возвращается к шлюзу, запускается таймер.

...