Повторите рекомендации для http: исходящего шлюза в Spring Integration
Я пытаюсь реализовать повторный совет для <int-http:outbound-gateway>
, У меня есть следующая конфигурация:
<int-http:outbound-gateway
request-channel="REQUEST_CHANNEL"
reply-channel="RESPONSE_CHANNEL"
url="HTTP_URL"
http-method="POST"
charset="UTF-8"
header-mapper="headerMapper"
extract-request-payload="true">
<int-http:request-handler-advice-chain>
<ref bean="retryHttpAdvice" />
</int-http:request-handler-advice-chain>
</int-http:outbound-gateway>
<bean id="headerMapper" class="org.springframework.integration.http.support.DefaultHttpHeaderMapper">
<property name="outboundHeaderNames" value="HTTP_REQUEST_HEADERS, UserRole" />
<property name="userDefinedHeaderPrefix" value="" />
</bean>
<int:handler-retry-advice id="retryHttpAdvice" recovery-channel="RECOVERY_CHANNEL"
max-attempts="5">
<int:exponential-back-off
initial="1000"
multiplier="2" />
</int:handler-retry-advice>
С DEBUG
уровень включен для org.springframework.integration
в Logback я вижу, что RetryAdvice выполняется, но без какой-либо попытки повторной попытки.
Это ожидаемое поведение? Например, я получаю ошибку 404, и я ожидал увидеть по крайней мере 3 попытки (количество повторов аналогично активатору службы), но только одну в данный момент без подсчета повторов.
exception is java.net.ConnectException: Connection refused
at org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler.handleRequestMessage(HttpRequestExecutingMessageHandler.java:409)
at org.springframework.integration.handler.AbstractReplyProducingMessageHandler$AdvisedRequestHandler.handleRequestMessage(AbstractReplyProducingMessageHandler.java:144)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice$1.cloneAndExecute(AbstractRequestHandlerAdvice.java:92)
at org.springframework.integration.handler.advice.RequestHandlerRetryAdvice$2.doWithRetry(RequestHandlerRetryAdvice.java:92)
at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:263)
at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:193)
at org.springframework.integration.handler.advice.RequestHandlerRetryAdvice.doInvoke(RequestHandlerRetryAdvice.java:88)
at org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice.invoke(AbstractRequestHandlerAdvice.java:69)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
at com.sun.proxy.$Proxy176.handleRequestMessage(Unknown Source)
Каков наилучший способ вызвать retryAdvice с http-outbound-gateway?