Обработчик повторов весной Java DSL - PullRequest
0 голосов
/ 27 марта 2020

в настоящее время у меня есть Spring Integration Flow, в котором читается полезная нагрузка из очереди JMS, преобразуется в формат XML, а затем отправляется полезная нагрузка XML в основное приложение. в RecordSenderHandler есть логика c, чтобы сделать API отдыха вызовов для моего основного приложения и сохранить ответ на Redis в соответствии с полученным ответом. Если мое основное приложение недоступно или что-то не так с моим бэкэндом, я отмечаю как ошибку HTTP 500. Но я хочу повторить попытку на определенное время и ограничить максимальную ошибку, которую я получил. ниже мой код. какие-либо предложения?

    @Bean
public IntegrationFlow jmsMessageDrivenFlowWithContainer() {
    return IntegrationFlows
            .from(Jms.messageDrivenChannelAdapter(
                    Jms.container(this.jmsConnectionFactory, recordDestinationQueue)
                            .concurrentConsumers(xmlConcurrentConsumers)
                            .maxConcurrentConsumers(xmlMaxConcurrentConsumers))
                    .errorChannel("errorChannel"))
           .handle(payloadSender(), e->e.advice(circuitBreakerAdvice()))
            .get();
}

@Bean
@ServiceActivator(inputChannel = "handleChannel")
public PayloadSender payloadSender() {
    return new PayloadSender ();
}

  @Bean
public RequestHandlerCircuitBreakerAdvice circuitBreakerAdvice() {
    RequestHandlerCircuitBreakerAdvice requestHandlerCircuitBreakerAdvice = new RequestHandlerCircuitBreakerAdvice();
    requestHandlerCircuitBreakerAdvice.setThreshold(3);
    requestHandlerCircuitBreakerAdvice.setHalfOpenAfter(15000);
    return requestHandlerCircuitBreakerAdvice;
}

1 Ответ

0 голосов
/ 27 марта 2020

См. Добавление поведения к конечным точкам и, в частности, RequestHandlerRetryAdvice.

.handle(..., e -> e.advice(retryAdvice()))

...

@Bean
public RequestHandlerRetryAdvice retryAdvice() {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...