Я бы хотел сделать серьезную попытку для активатора службы только в случае исключения ConnectionException, для других исключений я бы не хотел использовать повтор или очень легкую повторную попытку. Какую конфигурацию я могу использовать? Суть моей конфигурации приведена ниже:Возможно ли использовать 2 разных компонента повторной загрузки для одного активатора службы в зависимости от того, что выбрано исключение?
<int:channel id="sDZCreationErrorChannel">
<int:interceptors>
<int:wire-tap channel="errorLogger"/>
</int:interceptors>
</int:channel>
<int:channel id="sDZConnectionErrorChannel">
<int:interceptors>
<int:wire-tap channel="errorLogger"/>
</int:interceptors>
</int:channel>
<int:chain input-channel="sDZCreationErrorChannel" output-channel="outboundMailChannel">
<int-mail:header-enricher>
<int-mail:to value="${integration.sdz.email.to}"/>
<int-mail:subject value="${integration.sdz.email.subject.creation}"/>
</int-mail:header-enricher>
<int:transformer ref="integrationEmailTransformer" method="transformToEmail"/>
</int:chain>
<int:chain input-channel="sDZConnectionErrorChannel" output-channel="outboundMailChannel">
<int-mail:header-enricher>
<int-mail:to value="${integration.sdz.email.to}"/>
<int-mail:subject value="${integration.sdz.email.subject.noconnection}"/>
</int-mail:header-enricher>
<int:transformer ref="integrationEmailTransformer" method="transformToEmail"/>
</int:chain>
<int:channel id="sDZCreationChannel">
<int:queue/>
</int:channel>
<!-- Processing Creation Chain -->
<int:chain input-channel="sDZCreationChannel" output-channel="debugLogger"
auto-startup="#{environment.getProperty('sd.zoo.enabled') == 'connect'}">
<int:poller fixed-delay="500" />
<int:filter ref="sDZIntegrationExistingRequestSentFilter" method="filter"/>
<int:transformer ref="sDZCreationTransformer" method="transformOrder"/>
<int:service-activator ref="sDZCreationServiceImpl" method="activateConfirmationCodes">
<int:request-handler-advice-chain>
<ref bean="retryAdvice"/>
</int:request-handler-advice-chain>
</int:service-activator>
</int:chain>
<int:exception-type-router input-channel="errorChannel" default-output-channel="integrationDeadLetterErrorChannel">
<int:mapping exception-type="com.smartdestinations.connect.integration.exception.sdz.SDZCreationResponseException" channel="sDZCreationErrorChannel"/>
<int:mapping exception-type="com.smartdestinations.connect.integration.exception.sdz.SDZConnectionException" channel="sDZConnectionErrorChannel"/>
</int:exception-type-router>
Вы имеете в виду ExceptionClassifierRetryPolicy? Если да, мне нужно перезаписать его с помощью собственного класса или я могу настроить его в XML? –
1. Вы должны реализовать свою собственную «RetryPolicy». Да 'ExceptionClassifierRetryPolicy' может быть как образец для вас. 2. Вы можете настроить его в XML после этого как регулярный '' и ввести его в компонент' RetryTemplate'. –